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

 
Igor Makanu:

あなたの例には多くの誤りがあります。

があるはずです。

ここでは価格は正規化されていません OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen);

ここで、条件がfalseの場合、なぜOnTick()からの終了が必要なのか、そのロジックが理解できないのです。

おそらく、このままループを続けて、単純に注文の数を計算 すべきなのでしょう。

あなたの例はロジックが非常にシンプルなので、他のタスクのために修正するのは難しいのでは......。とか、「この人、トレールしたいんだろうな」とか。

まだ早いよ)))一度にたくさん出るでしょう。あまり意味がないですね))))そして、そう、もちろんすべてのsendorderの正規化のための計算の後が必要です))))

そこで、注文による条件として、我々の魔法で現在の楽器に注文がなければ、注文を入れるのです。そして、その条件は閉じるまで注文に到達しない。

PSが気に入らない状態 そうでない場合

 

ご挨拶、式の読み方について教えてください。

string sym=(symbol==NULL ? Symbol() : symbol);
 
Galim_V:

はじめまして、この表現の正しい読み方を教えてください。

もしsymbolが 空であれば、現在のシンボルの値をsym変数に 返します。

 
Vladimir Pastushak:

もしsymbol変数が空なら、現在のチャートシンボルの値をsym変数に 返し、空でないなら、その値をsym変数に渡します

ありがとうございました。

 
Galim_V:

はじめまして、この表現の正しい読み方を教えてください。

symbolがNULLの場合はSymbol()を読み込み、それ以外の場合は変数に代入 します。

このエントリに相当

string sym;
if(symbol == NULL)
sym = Symbol();
else
sym = symbol;
違いは行数だけです。
 
Alexey Viktorov:

Symbol()がNULLの場合、変数を代入し、それ以外の場合は値を 代入します。

このエントリーに相当するもの

違いは行数だけです。

ありがとうございました。

 
Valeriy Yastremskiy:

どのようなその後、例えば、あなたがウィンドウを開いていないEurobucksが、Eurofuntは、あなたが選択した順序のシンボルを比較すると、真の場合は、Eurobucksに注文があり、我々のマジック、その後Onstart関数から戻り、そうでない場合は、Eurobucksに注文が設定されますが、クロズ、高、Asc、入札は、これらのインスタンスの入札と尋ねるので、受注を開く際にエラーになります別のEurofuntの。また、Symbol()はカレントウィンドウのシンボルを返すので、エラーは発生しません。

メタエディタからテンプレートを使用することができます。左上に「新規作成」ボタンがあります。OnStart関数はまだ使われていますが、それは正しくなく、OnStartはスクリプトのためのものです。正しいテンプレートです。

正しいコードです。注文のコメントが抜けていますし、コードにマジコンが計上されていません。冒頭の警告の中に、Implicit type conversion of number to string(数値から文字列への暗黙の型変換)と記されています!!!

はい、その通りに動作します。ありがとうございます!!!

テンプレートで作成することがそんなに重要だとは知りませんでした。さすがOnStart。基本構造を間違えていました。まあ、これから知ることになるんだけどね。

 
Alexey Belyakov:

はい、その通りに動作します。ありがとうございます!(笑)。

テンプレートから作成することがそんなに重要だとは知りませんでした。OnStart、確かにそうですね。基本構造を間違えていました。まあ、これから知ることになるんですけどね。

まあ、それと、オーダーを扱う機能に入れるものは、すべて正規化すること。小数点以下が6桁の場合は、発注されずにエラーとなります。

KimIVから便利な機能のみ」でトピックを検索するか、KodoBaseで調べてみてください。

Igor Makanuは、より多くのエラーを上に書きました。そして、キムの機能は、まず本当に便利です。コメントは明確です。

 

よろしくお願いします。なぜテストではエラーが出るのか - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13) "" ?・・・?


#property link "2020年、グレイ。"

#プロパティリンク "uirnP0215@mail.ru"

#property version "1.00"

#プロパティの厳密さ


input double lots = 0.01;

input int Magic = 1546;



double ibufUP[]。

double ibufDN[]。


//+------------------------------------------------------------------+

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

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEEDED);

}

//+------------------------------------------------------------------+

//| 専門家による初期化関数

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| エキスパートティック機能

//+------------------------------------------------------------------+

void OnTick()

{

CountFractals()。

if(ibufUP[3]>0)とする。

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Failed to open sell order");

}

if(ibufDN[3]>0)とする。

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print("Failed to openBuy order");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

void CountFractals()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

//+------------------------------------------------------------------+



 
Madmas:

よろしくお願いします。なぜテストではエラーが出るのか - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13) "" ?・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 18


#property link "2020年、グレイ。"

#プロパティリンク "uirnP0215@mail.ru"

#property version "1.00"

#プロパティの厳密さ


input double lots = 0.01;

input int Magic = 1546;



double ibufUP[]。

double ibufDN[]。


//+------------------------------------------------------------------+

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

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEEDED);

}

//+------------------------------------------------------------------+

//| 専門家による初期化関数

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| エキスパートティック機能

//+------------------------------------------------------------------+

void OnTick()

{

CountFractals()。

if(ibufUP[3]>0)とする。

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Failed to open sell order");

}

if(ibufDN[3]>0)とする。

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print("Failed to openBuy order");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

void CountFractals()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

//+------------------------------------------------------------------+



手始めにCountFractals 関数でデクリメントカウンタを追加して ください。

理由: