csvファイルで指定した時間にEAを休止させるインジケータ
で紹介したEAで、稼働中のすべてのEAを休止状態にしたいというお問い合わせがありました。
確か・・・
faiさんが以前に・・・
http://d.hatena.ne.jp/fai_fx/20091201/1259610071
同じ感じですが、一応インジケータを作りました^^; ファイルはこちら→NoTrade_ReadFile_Ind.zip
インジケータですので、experts→indicatorsフォルダに保存してくださいね。
faiさんがおっしゃっているように、
エントリ後に、ストップ値変更でストップを入れるEAを稼動させている場合は、
決済(ストップ設定)用のEAが必要になります。
実際に使用される場合は、十分動作確認をしてから使用してください^^;
パラメータ『SwitchEAs』をfalseにした場合は、EA休止機能が無効になり、テキスト表示だけになります。
でわでわ^^
タグ
2011年2月 6日|コメント (5)
カテゴリー:indicators
コメント (5)
はじめまして。こんにちは。
プログラム超初心者の者ですが・・・
色々と調べていくうちに、こちらのブログに出会うことができました。これから、色々と参考にさせていただこうと思っています。
早速ですが、お聞きしたいことがありまして、コメントさせていただきました。
1000通貨での取引を考えていますが・・どうプログラムをかいていいのかわかりません。また、バックテストを行っても何も売買されません。教えていただきたいです。
宜しくお願いします。
投稿者:まさぴょん |2011年7月25日 01:27
//パラメーター
extern int FastMA_Period = 20; //短期移動平均の期間
extern int MiddleMA_Period = 90; //中期移動平均の期間
extern int SlowMA_Period = 200; //長期移動平均の期間
extern int Slippage = 3; //スリッページ
extern int SLpips = 50; //
extern int TPpips = 100; //
extern double Leverage =1.0;//レバレッジ
//+------------------------------------------------------------------+
//| ポジションを決済する |
//+------------------------------------------------------------------+
void ClosePositions()
{
for(int i=0; i1 || IsTradeAllowed()==false) return(0);
//移動平均の計算
double FastMA1M5 = iMA(NULL,PERIOD_M5,FastMA_Period,0,MODE_SMA,PRICE_CLOSE,1);
double MiddleMA1M5 = iMA(NULL,PERIOD_M5,MiddleMA_Period,0,MODE_SMA,PRICE_CLOSE,1);
double SlowMA1M5 = iMA(NULL,PERIOD_M5,SlowMA_Period,0,MODE_SMA,PRICE_CLOSE,1);
double FastMA2M5 = iMA(NULL,PERIOD_M5,FastMA_Period,0,MODE_SMA,PRICE_CLOSE,2);
double MiddleMA2M5 = iMA(NULL,PERIOD_M5,MiddleMA_Period,0,MODE_SMA,PRICE_CLOSE,2);
double SlowMA2M5 = iMA(NULL,PERIOD_M5,SlowMA_Period,0,MODE_SMA,PRICE_CLOSE,2);
//ロット数の計算
double microlot = 0.01;
double Lots = NormalizeDouble(AccountFreeMargin()*Leverage/1000000,2);
if(Lots = MiddleMA2M5 && MiddleMA2M5 =MiddleMA2M5 && MiddleMA2M5 > SlowMA1M5 )
{
ClosePositions();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,0,"",MAGIC,0,Blue);
return(0);
}
//売りシグナル
if(FastMA2M5 = SlowMA2M5 && FastMA1M5 <=MiddleMA2M5 && MiddleMA2M5 < SlowMA1M5 )
{
ClosePositions();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+SLpips*Point,0,"",MAGIC,0,Red);
return(0);
}
return(0);
}
投稿者:まさぴょん |2011年7月25日 01:31
//ロット数の計算
double microlot = 0.01;
double Lots = NormalizeDouble(AccountFreeMargin()*Leverage/1000000,2);
if(Lots < microlot) Lots = microlot;
//買いシグナル
if(FastMA2M5 >= MiddleMA2M5 && MiddleMA2M5 > SlowMA2M5 && FastMA1M5 >=MiddleMA2M5 && MiddleMA2M5 > SlowMA1M5 )
{
ClosePositions();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,0,"",MAGIC,0,Blue);
return(0);
}
//売りシグナル
if(FastMA2M5 <= MiddleMA2M5 && MiddleMA2M5 >= SlowMA2M5 && FastMA1M5 <=MiddleMA2M5 && MiddleMA2M5 < SlowMA1M5 )
{
ClosePositions();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+SLpips*Point,0,"",MAGIC,0,Red);
return(0);
}
return(0);
}
下のほうが、抜けてしまったので・・・
度々すみません。
投稿者:まさぴょん |2011年7月25日 02:05
まさぴょんさん
こんにちわ^^
EAがうまく動かないときは、
バックテストで、操作履歴にエラーが無いか確認してみてください。
原因が判る場合があります^^
それでも不明な場合は、コード内でPrintやCommentで変数の値がどのようになっているかしらべてみましょう。
地道な作業になりますが、がんばってください^^
投稿者:慶次 |2011年7月25日 13:31
慶次さん!!早速のご返答ありがとうございます。操作履歴を確認してみます。
ご教授ありがとうございました。
投稿者:まさぴょん |2011年7月26日 06:37


