csvファイルで指定した時間にEAを休止させるインジケータ

csvファイルで指定した時間にEAを休止させるインジケータ


EAの休止時間をcsvファイルで指定する方法

で紹介した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

コメントを投稿する

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)






画像の中に見える文字を入力してください。

Captchaの認証で入力ミスがありますと、コメントが消えてしまいますのでご注意ください。
コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。