[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 369

 

EAをテストして いるのですが、Sleep()関数がうまくいきません。

Expert Advisorを注文終了後、長時間フリーズさせたいのですが、代わりにfalse openをし続けています。


bool cl() {if (OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType(); double l=OrderLots(); int tik=OrderTicket();Alert("tik=", tik); } (注)1.if (t==OP_BUY) OrderClose(tik,l,Bid,3,Red); if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green); Sleep(300000000); } 。







 

テスターでスリープが 効かない。

 

EAがインジケータの色の変化、例えば緑-買い-赤-売りに反応することが可能かどうかを知りたいです。

と画面上の異なるアイコンの出現について...多分、MT4に機能があるのでは?

 
unumi >> :

エキスパートアドバイザーがインジケータの色の変化(例えば緑-買い-赤-売り)に反応することが可能かどうか知りたいです。

また、画面上に異なるアイコンを出現させるのは...MT4に機能があるのでは?

もしインジケータの色が変わったら、a) その線は異なるバッファにプロットされているので、状態を理解するためにそれらをポーリングすれば十分です(MT4ではMT5と異なり、動的にバッファの色を変更することはできません)、またはb) インジケータ線はグリッドオブジェクトによってプロットされています - その場合、あなたは単にオブジェクトゲット(...)を読み取る必要があります。

アイコンについても同様で、バッファを介したコードとして出力することも、オブジェクトとして出力することも可能です。

 
Svinozavr >> :

もし、インジケータの色が変化したら、a) その線は異なるバッファによって表示され、状態を理解するためにそれらをポーリングすれば十分です(MT4ではMT5と異なり、バッファの色は動的に変更できません)、または b) インジケータの線は gr.objects によって表示されます - そして、あなたはただ ObjectGet(...) プロパティを読む必要があるだけです。

アイコンについても同様で、バッファを利用したコードとして描画することも、オブジェクトとして描画することも可能です。

>>ありがとうございます、了解です。

 

おやすみなさい。

2つほど関連する質問があるのですが、アドバイスをお願いします。

1.各ティックで配列の要素を ゼロにする方法(例によって必要な場合)。

2.配列要素の値を正しく足し算する方法

例えば、こんな感じです。

各ティックで配列の要素が埋められ,1,2,3,4と埋めることができます.または15要素。

が、その都度、配列の要素値の算術和が必要です。

 
gvi2504 писал(а)>>

おやすみなさい。

2つほど関連する質問があるのですが、アドバイスをお願いします。

1.各ティックで配列の要素をゼロにする方法(例によって必要な場合)。

2.配列要素の値を正しく足し算する方法

例えば、こんな感じです。

各ティックで配列の要素が埋められ,1,2,3,4と埋めることができます.または15要素。

が、その都度、配列の要素値の算術和が必要です。

1.ArrayInitialize(ArrayName,0)関数です。

2.配列の中にsumという変数を宣言し、そこに0を代入し、配列の中に値を追加していく。

 
Integer >> :

1.ArrayInitialize(ArrayName,0)関数です。

2.sum などの変数を宣言し、値として 0 を代入し、配列が満たされるときにこの変数に値を追加します。

素晴らしい。

必要なものだけ>>ありがとうございました。

 
Bion писал(а)>>

Sleep(300000000)です。

このような長いスリープは、たとえテスターでSleep()が動作するとしても、選択肢にはありません。開封後、時刻を記憶させることができます。

LastTime=TimeCurrent()。

start()関数の冒頭でチェックします。

if(TimeCurrent()<LastTime+Pause)return(0)。

Pause - 開封後の「スリーピング」時間(秒)。

 
Integer писал(а)>>

このような長いスリープ時間は、たとえテスターでSleep()が動作するとしても、選択肢にはありません。開封後、開封時刻を記憶することができます。

LastTime=TimeCurrent()。

start()関数の冒頭でチェックします。

if(TimeCurrent()<LastTime+Pause)return(0)。

Pause - 開封後の「スリープ」時間(単位:秒)。

アドバイス通りやってみました。

datetime LastTime;
datetime Pause=3600;

int start()
{
if(TimeCurrent()<LastTime+Pause)return(0)。

...

bool cl() {if(OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType();
double l=OrderLots();
int tik=OrderTicket();Alert("tik=", tik);
}
if (t==OP_BUY) OrderClose(tik,l,Bid,3,Red);
if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green);
LastTime=TimeCurrent()。
}

しかし、テスターでは、条件に従って注文は開くが、時間には反応しない。

さらに、テスターは「保留中の注文が存在する時間」というパラメーターに何の反応も示さない、つまり、注文を削除する時間になっても注文が削除されないのです。

そういうものなのでしょうか?

注文が終了してからの経過時間をテスターに考慮させるにはどうしたらよいでしょうか。