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

 
makssub #:
午後私はこのコードを使って、すべての注文を終了しています。でも、たくさんあると全部閉まってないことに気づきました。初回でなくとも、全部を閉じるには何を加えればいいのか。可能であれば、その例を教えてください。

https://www.mql5.com/ru/docs/common/sleep

   if(AccountInfoDouble(ACCOUNT_EQUITY)<=TargetLoss || AccountInfoDouble(ACCOUNT_EQUITY)>=TargetProfit)
     {
      AllClose();
      Sleep(1000);
      AllClose();
      ExpertRemove();
     }
//---
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Sleep - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

最後の質問)

mqlプラットフォームからWindowsやLinuxにEAを移植した人。私は説明しましょう、一度長い時間前に、ゲーム自体は、あなたが寝ている間、主人公をポンプというミューオンラインのためのスクリプトを書いた。そこで問題は、プラットフォームの外で、誰がアドバイザーを移したかです。ロボットではなく、人間をトレードしているようなものです。

説明不足でしたら申し訳ありません )

 
makssub #:

最後の質問)

mqlプラットフォームからWindowsやLinuxにEAを移植した人。私は説明しましょう、一度長い時間前に、ゲーム自体は、あなたが寝ている間、主人公をポンプというミューオンラインのためのスクリプトを書いた。そこで問題なのは、もしかしたらプラットフォームの外で、アドバイザーを移したのは誰なのか、ということです。ロボットではなく、人間をトレードしているようなものです。

説明不足でしたら、すみません )

Windowsサーバー(VDSまたはVPS)上にMetaTraderが置かれ、その中でExpert Advisorが実行されています。以上、「兵士は眠り、サービスは去る」でした :-)

取引プラットフォームはアルゴリズムで、完全にロボットによるものではないにしても、ロボットが積極的に参加できるように設計されています。

でも、クリッカー(人間を模してボタンを「クリック」するソフト)を使っている人もいます。そして、フリーランスは定期的に依頼され、インターネット上に売り手が存在します。

 

押忍

次の注文のSL TPを変更するためのEAやコードの一部(フクロウのコードに含める)を満たすことができる人?

0.01SL=30 TP=100で 注文を出したとします。

次の注文は0.02で オープンSL= 30 TP= 95

など

どのような機能で表現すればよいのでしょうか?

現在、私のSL TPは このように割り当てられています。

//+-----------------------------------------------------------------------------------------------+
//|                                                                    Функция модификации ордера |
//+-----------------------------------------------------------------------------------------------+
void vOrderModify(int iOTi)
  {
   int    iOTy = -1;    // Тип ордера
   double dOOP = 0;     // Цена открытия ордера
   double dOSL = 0;     // Стоп Лосс
   int    iMag = 0;     // Идентификатор советника
   double dSL  = 0;     // Уровень убытка
   double dTP  = 0;     // Уровень прибыли

// Выберем по тикету открытый ордер, получим некоторые значения
   if(OrderSelect(iOTi, SELECT_BY_TICKET, MODE_TRADES))
     {
      iOTy = OrderType();
      dOOP = OrderOpenPrice();
      dOSL = OrderStopLoss();
      iMag = OrderMagicNumber();
     }

// Если ордер открыл данный советник, то входим в условие
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMag)
     {
// Если Стоп Лосс текущего ордера равен нулю, то модифицируем ордер
      if(dOSL == 0)
        {
         if(iOTy == OP_BUY)
           {
            dSL = NormalizeDouble(dOOP - StopLoss * Point, Digits);
            dTP = NormalizeDouble(dOOP + TakeProfit * Point, Digits);

            bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
           }

         if(iOTy == OP_SELL)
           {
            dSL = NormalizeDouble(dOOP + StopLoss * Point, Digits);
            dTP = NormalizeDouble(dOOP - TakeProfit * Point, Digits);

            bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
           }
        }
     }
  }
 

プロの皆さん、アドバイスお願いします!思いつきません(プログラミングを学び始めたばかりです)。

ここではExpert Advisorの一部を紹介しますが、どれでもかまいません。OnInit()関数では、2つのリターン演算 子があります。

括弧内の数字-1や0が出ないのですが、どこから出てきて、中断したプログラムはどこに戻るのでしょうか?

//| 専門家による初期化機能

//+------------------------------------------------------------------+
int OnInit()
{
*******************************************
if(********* || *********)
{
Alert("***************",******(),"!!");
return(-1)です。
}


**** = *******;
*** = *********;
if(_**** || _****)
{
}
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
 
vladeimirami #:

括弧内の数字-1や0が出ないのですが、どこから出て、中断したプログラムはどこに戻るのでしょうか?

https://www.mql5.com/ru/docs/event_handlers/oninit

読んでみてください。ゼロは成功し、プログラムは継続的に実行されます。他の数字は、仕事の終わりです。

Документация по MQL5: Обработка событий / OnInit
Документация по MQL5: Обработка событий / OnInit
  • www.mql5.com
OnInit - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Stepanenko #:

https://www.mql5.com/ru/docs/event_handlers/oninit

読んでみてください。ゼロは成功し、プログラムは継続されています。他の数字は、仕事の終わりです。

クソッ了解です。ENUM_INIT_RETCODE 列挙を よく読んでいなかった。ありがとうございます。とにかく、初期化に失敗したら、0以外の数字で終了します。少なくともデッドポイントからは動きました。ありがとうございました。
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

シンボルチャートの棒グラフの欠落をチェックする作業

この問題に対する解決策が見つからない

以下の原則に従ってスクリプトを書く必要があります:Print(date),Print(date),Print(date) if there is bar gap

例えば、M30チャートで48バー、47バーのギャップがあればPrint(date) とするスクリプトを作成します。

どう書けばいいのか?クロスプラットフォームソリューションが望ましい。

P.S. これは、利用可能なすべての履歴で行う必要があります。

 

Vitalyさん、バーパスはどのように見積もっているのですか?1日48本?夜11時に仕事が終わることもあれば、2時から始まることもある。ルーブルを見れば、夜にはそこでの取引はない。

24時間週5日という厳密なものであれば、順序を確認しながら各バーを順番に試していくことになります。しかし、その場合、存在しないはずのミスバーに関する信号が発生します。

 
Vitaly Muzichenko Print(date),Print(date) if there is bar gap

例えば、M30チャートで48バー、47バーのギャップがあればPrint(date) とするスクリプトを作成します。

どう書けばいいのか?クロスプラットフォームソリューションが望ましい。

P.S. これは、利用可能なすべての履歴で行う必要があります。

似たような作業として、ミスバーでタイムフレームを作るというものがあります。それは、たとえば、1日にちょうど1440分あることです。一部が空でもいいんです。

ということで、このような、手っ取り早く、すっきりした、美しいものはありませんでした :-( ただ、日の最初に配列を作り、0:00からの経過分をカウントし、このように記入します。

また、分単位の欠落は、iBars(current_time,0:01 of current day) と (current_time_beginning of day)/PERIOD_SECONDS の比較で確認できます...。

理由: