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

 

m5では正常に切り替わったのに、この先では切り替わらないのはなぜ?

extern string helper111="Настройки Helper";//Helper
extern bool helperTRUE=TRUE;        //Вкл/Выкл Helper
extern bool timeM1=TRUE;            //Переключения на М старт когда ордера все закрыты
extern int helper_period=PERIOD_M5; //Периуд М старт в минутах
extern int helper_period0=PERIOD_H1;//Базовый таймфрейм работы советника
extern int order_period1=6;         //Колво ордеров для переключения на Time 1
extern int helper_period1=PERIOD_D1;//Time 1 в минутах
extern int order_period2=8;         //Колво ордеров для переключения на Time 2
extern int helper_period2=PERIOD_W1;//Time 2 в минутах


int helperrr()
{
   if(helperTRUE==TRUE) {  
   if(timeM1==TRUE && NumberOfPositions()==0) ChartSetSymbolPeriod(0, NULL, helper_period);
   else {
   if(((NumberOfPositions1()>=0 && NumberOfPositions1()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions2()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions3()<order_period1)) && _Period != helper_period0)
   ChartSetSymbolPeriod(0, NULL, helper_period0);
   if((NumberOfPositions1()>=order_period1 && NumberOfPositions1()<order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period1 && NumberOfPositions2()<order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period1 && NumberOfPositions3()<order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period1);
   if((NumberOfPositions1()>=order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period2);
   }
   }
   return(0);
}
 
fxsaber:

ドルインデックスなどのトレーディングツールは見当たらない(指標?)

取引は できませんが、コードはどのように動作しますか?

 
Igor Makanu:

ドルインデックスなどのトレーディングツールは見当たらない(指標?)

取引は 禁止されていますが、あなたのコードはどのように動作しますか?

EAからの偽のOrderSendは、必ずしもその設定を決めることができるとは限りません。


私が提供したコードは、シンボルのプロパティなどに関係なく、どのEAの設定も表示します。例えば、ある種のEAを実行し、同じチャート上で次のスクリプトを実行します。

// Скрипт показывает, в каком режиме Long/Short запущен советник на данном чарте.
void OnStart()
{
  Alert(LongShortToString());
}
 
fxsaber:

EAからの偽のOrderSendは、必ずしもその設定が明らかになるとは限りません。


私が提供したコードは、シンボルのプロパティなどに関係なく、どのEAの設定も表示します。例えば、ある種のEAを実行し、同じチャート上で次のスクリプトを実行します。

をチェックすると、動作しますが

1.議論において https://www.mql5.com/ru/forum/214590/page6#comment_11947599

このコードは return(INIT_SUCCEEDED); に置き換える必要があります - 私はそれを試してみましたが、EAがどこに欠けているのか分かりませんでした ))

2.EAのプロパティを選択し、別のチェックボックスを付けると、なぜアラートが再表示されないのか理解できない、TFを切り替えると、すべてが正常である

Библиотеки: Expert
Библиотеки: Expert
  • 2019.04.23
  • www.mql5.com
Expert: Автор: fxsaber...
 
fxsaber:

EAからの偽のOrderSendは、必ずしもその設定が明らかになるとは限りません。


私が提供したコードは、シンボルのプロパティなどに関係なく、どのEAの設定も表示します。例えば、ある種のEAを実行し、同じチャート上で次のスクリプトを実行します。

EAにあなたのコードを追加することは可能ですか?

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

このコードで、xauusdのロングとショートの注文を無限に開けることができます。

 
Lomonosov1991:

あなたのコードを私のEAに追加することはできますか?

はい。


トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4とMQL5の初心者向けの質問、ヘルプ、アルゴリズムやコードに関する議論など何でも

Lomonosov1991, 2019.06.04 19:01

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

このコードで、xauusdのロングとショートの注文を無限に開けることができます。

ここでは、まさにゼロ ボリュームが必要だということです。
 
fxsaber:

はい。


ここでは、まさにゼロ ボリュームが必要だということです。
出来高なしで0.01ロットオープンします。
int testTicket=OrderSend(Symbol(),OP_SELL,0,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

となってしまい、全く機能しない。

int testTicket=OrderSend(Symbol(),OP_SELL,0,0,0,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,0,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";





 
Igor Makanu:

をチェックすると、動作しますが

1. https://www.mql5.com/ru/forum/214590/page6#comment_11947599 のディスカッションにて。

return(INIT_SUCCEEDED); に置き換えるべきですね。試してみましたが、Expert Advisor がどこで欠落しているのか分かりませんでした ))

この例では、後で手動で削除する必要がないように、わざとFAILEDを入れました。

2.EAのプロパティを選択し、別のチェックボックスをチェックしても、アラートが再表示されない理由がわからない、TFを切り替えると、すべてが正常である。

Long/Shortを変更する場合、OnDeinit/OnInitの呼び出しはありません。

 
動かし方がよくわからない((
ファイル:
 
fxsaber:

Long/Shortの変更時にOnDeinit/OnInitコールを行わないようにしました。

通常、OnIniT()は設定画面が呼び出された後に実行されるのですが、このような奇妙な動作が発生するのはなぜですか?


Lomonosov1991:
動かし方がよくわからない((

添付のサンプルを解凍し、フォルダに分散する。

ファイル:
MQL4.zip  5 kb