[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 224

 

なぜ受注が始まらないのか!?

このコードが動作しない理由を教えてください。

具体的には、2000年のチャートの期間(5番目のサインがどこでも0だったとき)で、配列の値の中で発生する価格で開いたローソク足があるものを選びました。

私の考えによると - 彼らのオープニングで注文をトリガする必要があります - しかし、それは起こりません....P O M U ?ですか?


int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 double massiv [4]={0.85370,0.85690,    0.85970 ,0.86170};//объявление и инициализация массива


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv[4],  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}
 
solnce600:

100個の値があり、最初の文字の後にカンマがある(例:価格)。

行のハイライト表示

ホーム - 検索と置換

カンマを全てドットに変更-成功。

ここで、値の間にカンマを入れる必要があります。

ファイル - 名前を付けて保存 - CSVファイルの種類を選択(区切り記号はカンマ)します。保存する。出力として、必要な形式のテキストファイルが得られます...

 
solnce600:

なぜ受注が始まらないのか!?

このコードが動作しない理由を教えてください。

具体的には、2000年のチャートの期間(5番目のサインがどこでも0だったとき)で、配列の値の中で発生する価格で開かれたローソクがあるものを選びました。

私のアイデアでは - 彼らのオープニングの順序で動作するはずです - しかし、それは起こりません......P O M U?



int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение

Massiv[4]は、配列 massivの4番目の要素という 意味です。

 
alsu:

今すぐ:ファイル - 名前を付けて保存 - CSVファイルの種類(カンマ区切り)を選択します。保存する。必要な形式のテキストファイルが出力されます。



ありがとうございました。 なぜ私の関数が動作しないか教えてください。

ありがとうございます。 もし私がプログラミングを学べたら......それはあなたのおかげです......!

 
solnce600:

なぜ受注が始まらないのか!?

このコードが動作しない理由を教えてください。

具体的には、2000年のチャートの期間(5番目のサインがどこでも0だったとき)で、配列の値の中で発生する価格で開かれたローソクがあるものを選びました。

私のアイデアでは - 彼らのオープニングの順序で動作するはずです - しかし、それは起こりません....P O M U ?ですか?


また、2倍の数値を比較するときに、次のように書けるといいですね。

 if (Bid == massiv[S])

このように

 if (NormalizeDouble (Bid-massiv[S],Digits)==0)
 
alsu:

massiv[4]は配列massivの4番目の要素を指しており、検索を行うには配列そのものを関数に渡す必要があります...。

了解です、ありがとうございました。
 
solnce600:

なぜ受注が始まらないのか!?

このコードが動作しない理由を教えてください。

具体的には、2000年のチャートの期間(5番目のサインがどこでも0だったとき)で、配列の値の中で発生する価格で開かれたローソクがあるものを選びました。

私の心の中で - 彼らのオープニングの順序で動作するはず - しかし、それは起こりません......P O M U ?ですか?

もう、「大人」のメソッドに移行する時期なんですね!!!- 結果を得るために、コードを実験してみましょう。

ヒント:変数の差を正規化することで比較することに慣れる。

    double ld_Delta = 10. * Point;
    if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)// и данная цена есть цена открытия нового бара
    {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}//открыть ордер       

で、先ほどの実験のために、ld_Deltaで「遊んでみて」ください。

 
solnce600:

ありがとうございました。 なぜ私の関数が動作しないか教えてください。

ありがとうございました。 もし私がプログラミングを覚えたら......それはあなたのおかげです......!


もし学ぶとしたら、それはあなたの勤勉さと努力のたまものです。私の役割は非常に控えめで、利己的な目標(あなたを助け、バグやエラーを素早く発見する自分の能力を鍛え、プログラミングに費やす自分の時間を減らし、同時に私の脳を鍛えること。さらに、何か貴重なアイデアが抜け落ちたらどうしよう?盗みます:)))
 
乗せる
alsu:

学んだとしたら、それはあなたの勤勉さと努力のおかげです。私の役割はとても控えめで、目標達成のための自己満足です(あなたを助け、バグやエラーを素早く発見する自分の能力を鍛えることで、プログラミングに費やす自分の時間を減らし、同時に私の脳を鍛えているのです)。さらに、何か貴重なアイディアが抜け落ちてしまったら?盗みます:)))

自力で答えを探すと時間がかかることがある(どっちを見ればいいのかわからないから)。

他に何かコツはありますか?

インクルードファイルで配列を 宣言し、初期化 したい。

ウィザードを呼び出した。

Chose - Bibliotekの機能。

名前を割り当てる。

全部きれいにして、配列を宣言して初期化しました。

incluideフォルダに保存する際、拡張子をmqhではなくmq4にして保存しました。

ファイルを呼び出す行を挿入し、コードに拡張子mqhを指定しました。

しかし、コンパイラは次のようなエラーを出します。

'UYTR.mqh' - cannot open program file C:\Program FilesAlpari NZ MT4(2)↵expertshh.mq4 (12, 2)

int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 #include <UYTR.mqh> 


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}

おそらく、コードコールのファイルとincluideフォルダのファイルの拡張子が異なることが原因だと思われます。

このような場合、どうしたらよいかアドバイスをお願いします。

ありがとうございます。

 
solnce600:
乗せる

自力で答えを探すと時間がかかることがある(どっちを見ればいいのかわからないから)。

他に何かコツはありますか?

インクルードファイルで配列を宣言し、初期化したい。

ウィザードを呼び出した。

Chose - Bibliotekの機能。

名前を割り当てる。

全部きれいにして、配列を宣言して初期化しました。

incluideフォルダに保存する際、拡張子をmqhではなくmq4にして保存しました。

ファイルを呼び出す行を挿入し、コードに拡張子mqhを指定しました。

しかし、コンパイラが何度もクラッシュしてしまう。

'UYTR.mqh' - cannot open program file C:\Program FilesAlpari NZ MT4(2)↵expertshh.mq4 (12, 2)

おそらく、コードコールのファイルとincluideフォルダのファイルの拡張子が違うのでしょう。

このような場合、どうしたらよいのかアドバイスをお願いします。

ありがとうございます。


ウィザードを使用している場合、インクルードファイルを直接作成することができ、そのファイルは拡張子mqhでincludeフォルダに保存されます。この後、#include <>で任意のプログラムに追加することができます。


即ち
not select - bibliotek of functions,
MQHヘッダーファイル