Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
//--- Do we have positions opened already?bool Buy_opened=false; // variable to hold the result of Buy opened positionbool Sell_opened=false; // variables to hold the result of Sell opened positionif(PositionSelect(_Symbol)==true) // we have an opened position
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Buy_opened=true; //It is a Buy
}
elseif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Sell_opened=true; // It is a Sell
}
}
//+------------------------------------------------------------------+//| СОВЕРШАЕМ СДЕЛКУ |//+------------------------------------------------------------------+if(last_tick.last < BBLow[2] && Buy_opened == false)
{
int znak = last_tick.last - BBLow[2];
//--- 1. Создать запросMqlTradeRequest Trade_reqst={0}; // Инициализация структуры торгового запроса
Trade_reqst.action=TRADE_ACTION_DEAL; // Тип: немедленное совершение сделки
Trade_reqst.symbol=_Symbol; // Инструмент: текущий
Trade_reqst.volume=Lot; // Объём: 1 лот
Trade_reqst.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-TakeProfit*_Point; // Цена исполнения
Trade_reqst.type=ORDER_TYPE_BUY; // Тип ордера: на продажу
Trade_reqst.type_filling=ORDER_FILLING_RETURN; // Политика исполнения
Trade_reqst.sl=last_tick.last - StopLoss * _Point; // Stop Loss
Trade_reqst.tp=SymbolInfoDouble(_Symbol,SYMBOL_ASK) + TakeProfit * _Point; // Take Profit// Trade_reqst.tp=Trade_reqst.price + TakeProfit * 2 * _Point; // Take Profit//--- 2. Отправить торговый приказMqlTradeResult Trade_reslt={0}; // Инициализация структуры результата торгового запросаOrderSend(Trade_reqst,Trade_reslt); // Отправка торгового запроса на сервер//--- выведем в лог ответ сервера //Print(__FUNCTION__," - : - ",Trade_reslt.comment);if(Trade_reslt.retcode==10016) Print("Ответ: ",Trade_reslt.bid,Trade_reslt.ask,Trade_reslt.price);
皆さんこんばんは!テスターでオープントレードにトレールをつけることにして、OrderGet...()を通してみて、取引がオーダーのカテゴリーからオープンポジションに なったことに気付き、それぞれPositionGet...()を通してみましたが、やはり何も動きません。
問題は、HistoryDealGet...()を使うべきかどうか?それとも、私が何か理解していないのでしょうか?テスターでオープントレードのSLを変更するにはどのようにすればよいのでしょうか?コメントありがとうございました。
MQL5で、トレンドラインや 垂直線などのグラフィカルなオブジェクトの有無のチェックを実装する方法を教えてください。
理想としては、「注文がない場合」「注文がある場合」のようなロジックを使い たいですね。
MQL5で、トレンドラインや 垂直線などのグラフィカルなオブジェクトの有無のチェックを実装する方法を教えてください。
理想は「注文がない場合」「注文がある場合」のようなロジックに することです。
購入アルゴリズムを正しく実装する方法を教えてください。
現時点では、Expert Advisorは、オープンポジションが あるという情報を受け取るまで、何度も買いを入れなければならず、遅れをとっています。Expert Advisor で最初の買いの後(条件が揃った時)、為替反応を待たせる方法
.
問題は、Bye_openedという 変数がtrueに なることで、ストップがトリガーされるまでEAが不必要な取引をしないようにしなければならないことです。しかし、変数Bye_opened を変更すると に 時間がかかり、 EA はいくつかのトレードをする時間が あります.
私のコードには何が欠けているのでしょうか?欠点をご指摘ください。
問題は、Bye_openedという 変数がtrueに なることで、ストップがトリガーされるまでEAが不必要な取引をしないようにしなければならないことです。しかし、変数Bye_opened の変更には 長い時間がかかり 、 EA はいくつかのトレードを行う時間が あります.
変数変更に時間がかかるからって...。どうしてそう判断したのですか?よし、そうだと仮定しよう。ならば、その答えは問いの中にある。もし、ポジションを開く のに遅延が必要な場合は、Sleep( N ) を使用する必要があります。
バリエーション2。その答えは、やはり質問の中にある。Bye_openedをグローバルにし、ポジションが正常に開かれた直後に、このモジュール内で変更します。位置の有無を確認するのと同じように、リセットしてください。
...
行を挿入した場合
コマンド:OrderSend()の後、ポジションの再開はありません。
先にポジションが開いているかどうかを確認して、それから・・・の方がいいかもしれませんね。
???
どうやら、刻々とロボットを走らせているようです。注文をサーバーに送信してからサーバーからの応答を受信するまでの間に、さらに数ティックが訪れ、各ティックで追加のポジションがオープンします。私の提案は、開封の繰り返しの状況を排除するものです。そして、ポジションがオープン されたかどうかを確認する必要があります。
そういうことなんです。そうしないと、文字通りすべてを理解してしまい、重要なチェックを見逃してしまうからです。
これが実は正しいチェック方法なんですね。すみません、うまくいきません。
以下はそのコードです(すべてOnTick ブロック内にあります)。
不要なボリュームを開けないようにするためです。
残念ながら、この条件は取引開始時には機能しません。