if (flag==1) { Symb="EURUSD"; OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и flag=2; ///выходим тк больше мы ни чего не можем сделать return(0); }
if (flag==2) { Symb="AUDUSD"; OrderSend(Symb,...) flag=3; return(0); }
if (flag==3) { Symb="USDJPY"; OrderSend(Symb,...) flag=0;//Возвращаем флаг в начальное состояние.. return(0); } return(0);}
EAで複数のシンボルの注文を一度に出す方法を教えてください。>> ありがとうございました。
EAは1つのシンボルに対してのみ注文を開くことができ、その後、他の注文のために取引フローを解放するために取引を待つ必要がある(そしてそれは常に成功し、常に高速ではありません)ので、これは不可能です。
皆さん、新参者にアドバイスをお願いします。チュートリアルのMQl4BookRussian.chm (author Sergey Kovalev)をダウンロードしましたが、問題はこのフォーマットからの印刷が非常に乱雑であることです。テキストをdoc形式にコピーすると、画像が消えてしまうことを確認しました。教科書は印刷に適した形式で提供されているか(モニターで読むため、目が疲れる)?
オンライン版の教科書をウェブサイトから直接お試しください -https://book.mql4.com/ru/。 そして、問題なくdocに転送することができます。
EAは1つのシンボルにしか注文を出せないので、これは不可能です。その後、取引操作が完了するのを待つ必要があり(そしてそれは常に成功し、常に速いとは限りません)、取引フローは他の注文に利用できるようになります。
トレードフローは全て理解できたのですが、最小限の間隔で3つの商品で連続して取引を行うにはどうしたらよいでしょうか(アドバイザーのアルゴリズムによると、3つの通貨で同時に一定秒数で取引を開始する必要があります)。もしよろしければ、例としてコードスニペットを掲載していただけませんか?ぜひともよろしくお願いします。
int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}
これが全部のコードだと、コンパイルすらできない。Lotの代わりに数字を入れると、EAが正常に動作します。
トレードの流れは全て理解しているのですが、3つのシンボルで最小限の間隔で連続して取引を開始させるにはどうしたらよいでしょうか(EAのアルゴリズムによると、3つの通貨で同時に一定秒数で開始する必要があります)。もしよろしければ、例としてコードスニペットを掲載していただけませんか?とてもありがたいことです
異なる楽器に対して3つの注文を開けばいいのでは?例えばフラグ変数を作ってみてはどうでしょう
グローバル変数で作成
int flag=0;
string Symb;
///////////////
も
int start()
{
if (условие открытия)
{flag=1;}
if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}
if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}
if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}
また、オープンチェックを追加し、チェックが成功した後にのみフラグを移動させることができれば良いと思います。
これが全部のコードだと、コンパイルすらできない。Lotの代わりに数字を入れると、EAが正常に動作します。
Lotのデータ型を確認してください。倍であるべきだ。
だから、一目でわかるように。用語がよくわからなかったのですが、第2バリアントではクロスオーバーはありません。
もうひとつ、OrderSend 関数は int チケットを返すので、このように成功判定をするのが正しいです。
あなたの場合、不正確であることを確認する必要があります。
______
そう、他の人はどうか知らないが、私には「専門家」という言葉が馬鹿にされているように聞こえるのだ。だから、長い間返事がないのかもしれませんね。;)
そう、何を言っても......そう呼ばないこと......。エキスパートとは、スペシャリスト(知識を持った人、いわば先生)を略したものですが。
私は気にしない......私は唯一の肯定的な、親切な意味....................。
気にしないでください......。
このスレッドの一番最初に、私はMAについて質問しました。とても賢い答えが返ってきました。今、私は再び戻ってきた。
ひとつのアイデアが浮かびました......。
取引条件を少しいじってみることにした。しかし、うまくいきませんでした((((((( ;゚Д゚))))) open_1とopen_0(最初のバーの建値と
ゼロバーでの始値)チェックするとエラーが出るので、オリジナルバージョン(上にあげたもの)に戻す必要がありました。
説明の通り、open[1]は名前open、インデックス[1]の配列セルを呼び出すものです。しかし、1(2,0)バーでオープンプライスが必要なだけです。
ダミーのためのヒント......))))))))))))))))))))))))))))))))))))))))))
保留中の注文がトリガーされたことを追跡する方法は? 履歴のIDで検索するのが良いのか、もっと簡単な方法があるのか?
これを試してみてはいかがでしょうか
OrderSelect(1, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
///необходимая операция
}
ただし、これは注文が1つしかない場合のオプションです。