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()。 }
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に機能があるのでは?
エキスパートアドバイザーがインジケータの色の変化(例えば緑-買い-赤-売り)に反応することが可能かどうか知りたいです。
また、画面上に異なるアイコンを出現させるのは...MT4に機能があるのでは?
もしインジケータの色が変わったら、a) その線は異なるバッファにプロットされているので、状態を理解するためにそれらをポーリングすれば十分です(MT4ではMT5と異なり、動的にバッファの色を変更することはできません)、またはb) インジケータ線はグリッドオブジェクトによってプロットされています - その場合、あなたは単にオブジェクトゲット(...)を読み取る必要があります。
アイコンについても同様で、バッファを介したコードとして出力することも、オブジェクトとして出力することも可能です。
もし、インジケータの色が変化したら、a) その線は異なるバッファによって表示され、状態を理解するためにそれらをポーリングすれば十分です(MT4ではMT5と異なり、バッファの色は動的に変更できません)、または b) インジケータの線は gr.objects によって表示されます - そして、あなたはただ ObjectGet(...) プロパティを読む必要があるだけです。
アイコンについても同様で、バッファを利用したコードとして描画することも、オブジェクトとして描画することも可能です。
>>ありがとうございます、了解です。
おやすみなさい。
2つほど関連する質問があるのですが、アドバイスをお願いします。
1.各ティックで配列の要素を ゼロにする方法(例によって必要な場合)。
2.配列要素の値を正しく足し算する方法
例えば、こんな感じです。
各ティックで配列の要素が埋められ,1,2,3,4と埋めることができます.または15要素。
が、その都度、配列の要素値の算術和が必要です。
おやすみなさい。
2つほど関連する質問があるのですが、アドバイスをお願いします。
1.各ティックで配列の要素をゼロにする方法(例によって必要な場合)。
2.配列要素の値を正しく足し算する方法
例えば、こんな感じです。
各ティックで配列の要素が埋められ,1,2,3,4と埋めることができます.または15要素。
が、その都度、配列の要素値の算術和が必要です。
1.ArrayInitialize(ArrayName,0)関数です。
2.配列の中にsumという変数を宣言し、そこに0を代入し、配列の中に値を追加していく。
1.ArrayInitialize(ArrayName,0)関数です。
2.sum などの変数を宣言し、値として 0 を代入し、配列が満たされるときにこの変数に値を追加します。
素晴らしい。
必要なものだけ>>ありがとうございました。
Sleep(300000000)です。
このような長いスリープは、たとえテスターでSleep()が動作するとしても、選択肢にはありません。開封後、時刻を記憶させることができます。
LastTime=TimeCurrent()。
start()関数の冒頭でチェックします。
if(TimeCurrent()<LastTime+Pause)return(0)。
Pause - 開封後の「スリーピング」時間(秒)。
このような長いスリープ時間は、たとえテスターで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()。
}
しかし、テスターでは、条件に従って注文は開くが、時間には反応しない。
さらに、テスターは「保留中の注文が存在する時間」というパラメーターに何の反応も示さない、つまり、注文を削除する時間になっても注文が削除されないのです。
そういうものなのでしょうか?
注文が終了してからの経過時間をテスターに考慮させるにはどうしたらよいでしょうか。