ヘルプが必要

 

問題は、
私は実質的に言語を知らない、私はいくつかのVPのための注文の開口部を自動化する必要があり、私はこの単純なコード(添付ファイル)を出したが、それは不器用であることが判明した、
計画によると6 VPを開く必要がありますが、唯一の3 VPを開きますが、時にはすべての6を開き、その後再びそれが正常に動作しなくなります(私はこれがない円、ブロック内のように小数点以下の桁 数に起因するかもしれないと思うが、すべてがうまく動作します。
この問題を解決するために、ご協力お願いします。
もし、私が難しいのでなければ、私は取引を買いまたは売りだけに切り替えることができるようにそれを書くために助けを必要としています。

ファイル:DANGER FILE DELETED

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sergey Korsunov:

問題は、
私は実質的に言語を知らない、私はいくつかのVPのための注文の開口部を自動化する必要があり、私はこの単純なコード(添付ファイル)を出したが、それは不器用であることが判明した、
計画によると6 VPを開く必要がありますが、唯一の3 VPが、時には6すべてを開く、しかしその後再びそれが当然のように動作を停止(私はこれがないJPYとブロックで、すべての作品として価格の小数部の数が 原因かもしれないと思います)。
この問題を解決するために、ご協力お願いします。
私はそれを記述する方法についての詳細を必要とするハードではない場合、私は売買のみに取引を切り替えることができます。

ファイル:DANGER FILE REMOVED

ファイルは、ボタン(ファイルを添付する )を使って添付してください。

 
大丈夫
ファイル:
Test_3.mq4  7 kb
 
Sergey Korsunov:

問題は、
私は実質的に言語を知らない、私はいくつかのVPのための注文の開口部を自動化する必要があり、私はこの単純なコード(添付ファイル)を出したが、それは不器用であることが判明した、
計画によると6 VPを開く必要がありますが、唯一の3 VPが、時には6すべてを開く、しかしその後再びそれが正常に動作しなくなります(私はこれが円なしのブロックでは、すべての作品として小数部の 数に起因するかもしれないと思います)。
この問題を解決するために、ご協力お願いします。
また、それが困難でない場合は、それが唯一の買いまたは売りの取引の開始を切り替えることが可能であったことを、どのように処方することがプロンプトが表示されます。

注文を開始できない理由はさまざまです。最初のティックで、3つの注文を出したとします。

次のティックでは、プログラムの一番最初に、 if(OrdersTotal() >= OrderCount) return; これは、注文数がOrderCountより 大きいので、= 1が返されることになります。

それ以外のプログラムは無視されます。

このセリフから判断すると

//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"

このプログラムは、MetaQuotes Software Corp.によって開発されました。 アドバイスを聞いてみよう

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
a007 #:

注文が開けない理由はさまざまです。最初のティックで、3つの注文を出したとします。

次のティックでは、プログラムの一番最初に、 if(OrdersTotal() >= OrderCount) return; これは、注文数がOrderCountより 大きいので、= 1が返されることになります。

それ以外のプログラムは無視されます。

このセリフから判断すると

このプログラムはMetaQuotes Software Corp.によって開発されました。 どうぞご相談ください。

余計な注文が入るということでしょうか?

 
Fast235 #:

というのは、追加で注文が入るということでしょうか?

いいえ、それどころか、6種類の通貨ペアが必要で、3種類しか開設されていません

ちなみに、円建て地金がないところは、メインもクロスも6ペアすべてオープン、円建て地金があるところは、3ペアのみオープン

 
Sergey Korsunov #:

いいえ、それどころか、6種類の通貨ペアが必要で、3種類しか開設されていません

最も簡単な方法は、各オーダーを開いた後にSleep()を置くことで、ターミナルには数量を更新する時間がありません(パフォーマンス上の理由によるものらしい)。

 
Fast235 #:

最も簡単な方法は、各注文が開かれた後にSleep()を置くことで、ターミナルは数量を更新する時間がありません。

私は実質的に言語を理解していません (
私は純粋にウェブ上の例に基づいて私のコードを書きました
私のコードにSleep()を置くのを手伝ってください。

 
Sergey Korsunov #:

私は言語に関する知識がほとんどありません (
Web上の例から純粋にコードを書きました
私のコードにSleep()を挿入するのを手伝ってください。

OrderSendの後、Sleep(50)を入れる。

50でダメなら100〜200に増やす

 
Fast235 #:

OrderSend の後、Sleep(50) を置く。

50回で効果がなければ100~200回に増やす

は役に立ちませんでした((

 
Sergey Korsunov #:

は役に立たなかった((

より短く、より正確に、この方法で試してみてください。自力で解決すれば、プログラミングのコリョクになる。単語上にカーソルを置き、F1キーを押す

//+------------------------------------------------------------------+
//|                                                       Test 3.mq4 |
//+------------------------------------------------------------------+
#property strict

extern double Lot   = 0.01;
extern int    Slip  = 3;
extern int    Magic = 777;

string name[10]={"AUDJPY","CHFJPY","CADJPY","AUDCAD","AUDCHF","CADCHF"};
int    cnt[6];

void OnTick()
{
   ArrayInitialize(cnt, 0); // Обнуление счетчиков

   // Подсчет ордеров по каждому торговому инструменту
   for(int n=OrdersTotal()-1; n>=0; n--)
   {
     if(!OrderSelect(n,SELECT_BY_POS))continue;
     for(int k=0; k<6; k++) if(OrderSymbol()==name[k]) cnt[k]++;
   }

   // Открытие ордеров по каждому торговому инструменту
   for(int k=0; k<6; k++) if(!cnt[k]) int ticket = OrderSend(name[k],OP_BUY, Lot, MarketInfo(name[k],MODE_ASK), Slip, 0, 0, "", Magic);
}
理由: