[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 180

 

double 型の数値を扱うとき、変数に何らかの値を代入する必要がある場合(例えばゼロ)、著者によって綴りが異なる。例えば、a=0; or a=0.0; or a=0.0000; プログラムが正しく動作するという点で、何か違いがあるのでしょうか?

 

if ((OrderSymbol()==Symbol()))&& ((OrderMagicNumber()==44) || (OrderMagicNumber()==55)) && (ticket=0)){。

OrderDelete(OrderTicket())。

int err1=GetLastError();

Print(err1);}を実行します。

このコード片はしばらく正常に動作していました。現在、エラー ERR_OFF_QUOTES が返されています。なお、チケット番号を手動で入力してもOrderDeleteでエラーが返されます。どなたか、この状況を明らかにしてください。ありがとうございます。

 
Elenn:

double 型の数値を扱うとき、変数に何らかの値を代入する必要がある場合(例えばゼロ)、著者によって書き方が異なる。例えば、a=0; or a=0.0; or a=0.0000; プログラムが正しく動作するという点で、何か違いがあるのでしょうか?


いいえ、ルールはありません。しかし、個人的には、定数doubleの値はドットで書くのが好きです。

例えば、こんな感じです。

if ( a == 1.0 )
{}

// ...

b = 3.0;

まず、テキストをざっと見たところ、値の型はdoubleである。

第二に、いくつかのエラーを回避することができます。比べてみてください。

double a=2/3;
double b=2.0/3.0;

Print("a=",a," b=",b);
 

よろしくお願いします。コードの実行を希望しない

int start()
{
int pre12です。
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point,CLR_NONE)。
}
を返します。

}

すなわち、意図したように、キャンドルが上昇している場合 - オープン。

すべてコンパイルします。しかし、テスト中は何も起こりません。つまり、注文を出さない。エラーに穴をあけてください・・・。

 
NaVolne:

よろしくお願いします。コードが実行されようとしない。

int start()
{
int pre12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(,OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point,CLR_NONE);
} }.
を返します。

}

すなわち、ローソク足が上昇している場合、それは開く。

すべてコンパイルします。しかし、テスト中は何も起こりません。つまり、注文を出さない。頼むからエラーを指摘してくれ。

チャート上の現在のローソク足はどれですか? 前日のローソク足ですか? 前週のローソク足ですか? 前日のローソク足であれば、例えば・・・以下のように表示されます。

if(iOpen(NULL,1440,1)<iClose(NULL,1440,1)) iOpen/iCloseヘルプレットがすべてを明確に記述して います。

 
NaVolne:

よろしくお願いします。コードの実行を希望しない

int start()
{
int pre12です。
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point,CLR_NONE)。
}
を返します。

}

すなわち、意図したように、キャンドルが上昇している場合、それは開く。

すべてコンパイルします。しかし、テスト中は何も起こりません。つまり、注文を出さない。エラーに穴をあけてください・・・。

ポイントは、PRICE_CLOSEとPRICE_OPENは定数であり、関数でもなく、時系列の配列でもないことです。ローソク足の始値、終値の値を取得するには、関数(iOpeniClose)や時系列の配列(OpenClose)を参照する必要があります。

もっと詳しく知りたい方は、チュートリアルを 読んでください。例えば、このセクションでは、定義済みの変数(欲しい時系列配列、OpenとCloseが含まれています)について説明しています。

 
Elenn:

double 型の数値を扱うとき、変数に何らかの値を代入する必要がある場合(例えば0)、著者によって綴りが異なる。例えば、a=0; or a=0.0; or a=0.0000; プログラムが正しく動作するという点で、何か違いがあるのでしょうか?

の場合、私はそれを理解しています。

double a = 1;

コンパイラは "1 "をint型の値とみなし、型変換(int型→ターゲットdouble型)を行う。

そして、万が一の場合。

double a = 1.0

又は(違いなし)

double a = 1.0000

と入力すると、コンパイラは "1.(xxxx)" を double 型の値として認識し、型変換を行いません。


追記:PapaYozh さん、例を挙げていただきありがとうございます。上記の感想は、その後に出てきたものです。

あまり何度も型を引き合いに出さないほうが、コンパイラにとっては楽なんでしょうね。それとも、ex4でも「未変換」タイプのセリフがあるのでしょうか?パフォーマンスが低下しているということでしょうか?コンパイラはコードを最適化することになっていますが。

経験豊富なMQL4プログラマーの方に訂正してもらいましょう。

 
メガ回答ありがとうございました。読むこと、掘り下げること。
 
NaVolne:
メガ回答ありがとうございました。読むこと、掘り下げること。
私たちの回答ではなく、教科書を読むべき!:))地肌から地肌へ、自然に。
 
LexAlex:

このコード片は最近までうまくいっていたのですが、現在はエラー ERR_OFF_QUOTES が返されるようになっています。チケット番号が手書きの場合でもOrderDeleteでエラーが返されますのでご注意ください。どなたか、この状況を明らかにしてください。ありがとうございます。

フリーズ レベルにあるのかもしれませんね。もしかしたら、口座に何か問題があって、その口座で頻繁に取引があるためにブローカーが流れを止めているのかもしれません。