MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1863

 
Artyom Trishkin #:
休憩

何の質問ですか?)

 
Alexey Viktorov #:

何の質問でしょうか)))

どうやらあなたとAndreiは荒らしをやめたほうがよさそうです...。

雰囲気は本当に不親切です(上記の通り)。MQLQLの問題を議論するためにここに来ました。しかし、MQLとは関係ないものを読んでしまった。何を言ってるんだ?

新参者に質問させたりして...。それとも、怖いのかな......?あなたとアンドレイの争いに巻き込まれなさい...。:)
 

皆さん、こんにちは。


ある条件に従って、異なる方向、異なる通貨ペアで、複数の注文を一度に決済するのです。しかし、証券会社の都合でコマンドが実行されず、注文の一部が空いたままになることがあります。オーダーごとにSleepを 処方することができます。でも、もっと短いのが欲しい。

if ( NormalizeDouble((MaxOpenSell(2) + MaxOpenBuy(2) + MinOpenSell(2))*Point,Digits) >= Profit1 && FindLastSell() >= Block 
         && FindLastBuy() >= 1 && MaxOpenSell(2) > 0 && MA1 < MA2)
      {
         LockTicket = 0;
         CalProfHis = 0;
         bool close =  OrderClose((int)MaxOpenSell(5),MaxOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MinOpenSell(5),MinOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MaxOpenBuy(5),MaxOpenBuy(3), Bid, Slippage, clrBlue);

      }
 
makssub Sleepを 処方することができます。もっと短いものを使いたい。

https://book.mql4.com/ru/trading/orderclose

Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
makssub Sleepを 処方することができます。もっと短いものが欲しいです。

終了・閉会条件が発生したら、そのチケットを配列に追加する必要があります。そして、配列が空でなければ、プログラムはそれをループし、各チケットに対してOrderCloseを呼び出します。そして、各チケットの存在を確認し、リストから削除します。リストが空になるまで、1~3秒間隔でこれらの動作を繰り返します。

 

こんにちは。

作業終了時にExpert Advisorの純利益を計算する必要があります。OnDeinitでOrdersHistoryTotal()のループを実行し、OrderProfit()を追加しています。

Profit=Profit+OrderProfit()です。

しかし、最終的にはテスターで報告された利益とは異なっている。一部の注文でポイント数が異なることがわかりました。

その理由は何でしょうか。スプレッドはテスターで手動で設定します。

 
AlexandrVV #:

こんにちは。

作業終了時にExpert Advisorの純利益を計算する必要があります。OnDeinitでOrdersHistoryTotal()のループを実行し、OrderProfit()を追加しています。

Profit=Profit+OrderProfit()です。

しかし、最終的にはテスターで報告された利益とは異なるものとなっています。一部の注文でポイント数が異なることがわかりました。

その理由は何でしょうか。スプレッドはテスターで手動で設定 します。

スワップ、コミッションの追加を忘れていた!スプレッドは、常に入口価格と出口価格の間にあるため、すでに考慮されています。

 
Mihail Matkovskij #:

スワップ、コミッションの追加を忘れていた!スプレッドは、常にエントリー価格とエグジット価格の間にあるため、すでに考慮されています。

あ、そうだったんですか!?ありがとうございました!!!)

 
皆さん、こんにちは。価格が指定したレベルに達すると、携帯電話に通知を 送信するスクリプトまたはインジケータがある場所を教えてください。
 

このコードでは注文を閉じて、もし注文がなければ新しいものを開くはずですが、何が問題なのか教えてください。

しかし、なぜか1注文だけクローズして次のシグナルまで止まってしまいます。

2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Signal 1.1322 < clos 1.1304 ExistPosSell 0
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Signal 1.1322 > clos 1.1304 ExistPosBuy 1
2022.01.17 16:22:08.366 2022.01.04 08:00:00 e: Signal 1.1325 < clos 1.1306 ExistPosSell 0
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e: Signal 1.1325 > clos 1.1306 ExistPosBuy 1
2022.01.17 16:22:08.327 2022.01.04 2022.01.04 00:00:00 e: Signal 1.1325 > clos 1.1306 *1: Signal 1.1325 >clos 1.1306 ExistPosBuy 1 2022.01.17 16:22:08.326 2022. 02:00:001326 < clos 1.1296 ExistPosSell 0
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e: Signal 1.1326 > clos 1.1296 ExistPosBuy 1
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Signal 1.1328 < clos 1.1283 ExistPosSell 0
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: close #1 buy 0.01 EURUSD at 1.13598 at price 1.12831

2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Signal 1.1328 > close 1. 1383.1283 ExistPosBuy 1
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: open #4 buy 0.01 EURUSD at 1.13512 ok
2022.01.17 16:22:08.190 2022.01.17 17:22:08.190 2022.01.03 16:00:00 e: Signal 1.134 < close 1.135 ExistPosSell 0
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Signal 1.134 > close 1.135 ExistPosBuy 1

if(isNewBar()==true) {  
if(Signal > clos ) {  //--------------------- МА выше цены закрытия предыдущего бара.
     if(ExistPositions( NULL, OP_BUY, Magic) == true) //---------------- Если есть позиция BUY то
ClosePosWithMaxProfitInCurrency(); //--------  закрытие одной позиции с максимальным профитом в валюте депозита.
         if(ExistPositions( NULL, OP_BUY, Magic) == False) //----------- если позиции BUY отсутствуют то
   ticket=OpenPosition(NULL,OP_SELL, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию SELL

if(Signal < clos ) { //--------------------- МА ниже цены закрытия предыдущего бара.
    if(ExistPositions( NULL, OP_SELL, Magic) == true) //---------------- Если есть позиция SELL то
 ClosePosWithMaxProfitInCurrency(); //---------------------закрытие одной позиции с максимальным профитом в валюте депозита.
        if(ExistPositions( NULL, OP_SELL, Magic) == False)  //----------- если позиции SELL отсутствуют то
  ticket=OpenPosition(NULL,OP_BUY, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию BUY

} return;