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

 
deyron:
こんにちは。一つのEAを複数の通貨ペアのウィンドウに同時に貼り付けた場合、一つのウィンドウのEAの変更が他のウィンドウのEAに影響を与えるかどうか教えてください。


同じEAのマジックを変更した場合、EAはそれぞれのウィンドウで別々に動作します。

 

私のEAのデザインを変えるのに、本当に助けが必要です。

中身はすべて満足、ただ、欲を言えば...。もし、ブレイクイーブンやテイクプロフィットで決済することができない場合は、取引戦略を変更することなく、新しいシグナルがオープンする反対側で決済してください。例えば、売りの取引が一転して、Owls が Breakeven に移行しなかった場合、彼は新しいローソク足で売りの取引を開始し、引き戻しを期待して出来高を増やし、Stop Loss/Take...で取引を終了したかのように作業を続けて欲しいのです。価格が反転すれば買いを開き、大きなマイナスはあるもののそちらを閉じる...。このように

/*デコンパイル削除*/

 
deyron:
こんにちは。一つのEAが複数の通貨ペアのウィンドウに添付されている場合、一つのウィンドウのEAの変更が他のウィンドウのEAに影響を与えるかどうか、アドバイスをお願いします。
いいえ、互いに影響し合うことはありません。同じポジションマジックでも、EAがマジックだけでポジションクローズを 決定している場合は害にしかなりません。
 

皆さん、ごきげんよう。グローバル変数の 理解を助けてください。 問題は次のようなものです。 bool line_1=false; に変わる。 を真に受ける。 価格に到達したときに、他のアクションとなる到達のレベルを作る。 ブールライン1 になる を偽った。 私はシステムを再起動する必要があるか、パラメータは金曜日の夜に到達していない、この変数の値が失われ、取引の結果に影響を与える、私はそれらをグローバルなブール変数を作る必要があることを理解として。私はまだそれについて何もしていないと私は、コードで修正を加えるつもりだと思うならあなたのアドバイスが必要、何か行う必要があるかどうかを教えてください、ありがとう。

bool line_1=GlobalVariableGet(false);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}.

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);} {line_1=GlobalVariableSet(false)

このようなコードにした場合、端末を再起動したときに、変数は再起動した瞬間に以前の値を残すのか、それともプログラム開始時に宣言した状態にリセットされるのでしょうか?いつもありがとうございます。

 
paladin80:
いいえ、互いに影響し合うことはありません。同じポジションマジックでも、EAがマジックだけでポジションクローズを決定するのは不利にしかならない。

はい、もちろん別のフィルターをかけることもできます。例えば、シンボルで、など。一番シンプルな選択肢を言ったんだ。
 
laveosa:

ごきげんよう。グローバル変数について理解する手助けをしてください。 bool line_1=false; に変わる。 を真に受ける。 価格に到達したときに、他のアクションとなる到達のレベルを作る。 ブールライン1 になる を偽った。 私はシステムを再起動する必要があるか、パラメータは金曜日の夜に到達しない、この変数の値が失われ、取引の結果に影響を与える、私はそれらをグローバルなブール変数にする必要があることを理解として。私はまだそれについて何もしていないと私は、コードで修正を加えるつもりだと思うならあなたのアドバイスが必要、何か修正する必要があれば教えてください、ありがとう。

bool line_1=GlobalVariableGet(false);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}.

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);} {line_1=GlobalVariableSet(false)

このようにコードを構築した場合、端末を再起動した瞬間に変数は以前の値を残すのか、それともプログラム開始時に宣言した状態にリセットされるのでしょうか?いつもありがとうございます。

まず、GlobalVariableSet() について読んでみてください。パラメータが不足しており、間違った使い方をしています。

そして、一連の動作は、保存したい変数の値が変化したら、その値を本関数を用いて端末の適切なグローバル変数に渡すというものである。そして、init()でEAを再初期化する際に、GlobalVariableGet() 関数でその値を変数に渡します。

 

皆さん、ヒントをください。

私は、プログラムへのコメントに書かれているような、簡単なアイデアを実現しようとしているのです。

プログラムは、コードで指定された価格と一致しない価格でTESTERに注文を開く。

例えば、この注文は0.86084という価格で始まり、配列の中で最も近い値は0.85375となります。

差は正ですが、コードは差が< 0.00000、すなわち負である場合に注文を開くように指定しています。


エラーの発生箇所をお知らせください。

ありがとうございます。

int start()
{
 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ;//параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND);//функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыть
 
solnce600:

皆さん、ヒントをください。

私は、プログラムへのコメントに書かれているような、簡単なアイデアを実現しようとしているのです。

プログラムは、コードで指定された価格と一致しない価格でTESTERに注文を開く。

例えば、注文は0.86084の価格で始まり、配列の中で最も近い値0.85375となります。

この差は正の値ですが、コードでは差が< 0.00000、すなわち負の値である場合に注文を出すように指定されています。

エラーの発生箇所をお知らせください。

ありがとうございます。

エラーを見つけるには、各行を下から順に見ていき、取得したいものと書かれているものがどのように対応しているかを確認するのが一番です。

if ((NormalizeDouble (Bid-massiv[S],Digits) <=0))
//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000
この条件は、前提として...- これがあなたの意図するところですか?(1 - 1000000 <= 0) - を満たすか?

解決策を提示したのに「スルー」された...。

 
TarasBY:

間違いの見つけ方:各行を下から順に見ていき、自分が望んでいたことと書かれていることの対応関係に気づくこと。

この条件では、...- これがあなたの意図するところですか?(1 - 1000000 <= 0) - を満たすか?

解決策を提示したのに「スルー」された...。

ありがとうございました、ヒントもコピーさせていただきました・・・。頭を働かせて考えてみます。

ただ、Bid変数の値(最後のティックの価格)を1とするのが理解できません。最初の1桁の後に小数点がある6桁の値だと思うのですが...。の値であり

私が誤解している可能性があることを教えてください。

あなたのコードをよく研究しました。

double ld_Delta = 10.* Point;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
and this price isopen price of new bar
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123);}//openorder


しかし、私は理解できない

-なぜ、変数massiv[S ]ではなく、変数Priceを 使うことを提案するのですか? 最後のバーの建値が含まれて います。

私の考えでは、注文を開くための必要条件の1つは、最後のティックの価格に最も近い配列の値の1つとそのオープン価格が一致することです。

私の戦略の全容は次のとおりです。

2つの条件を同時に満たした場合のOPEN ORDER

-最後のローソク足の始値

配列の値に最も近い 価格(配列の値 - 約2000の非繰り返し 入札価格の値が ランダムな順序で 並んでいます)で。

でも、2日目も悩んでしまって......全部ダメでした。


	          
 
solnce600:

ありがとうございました、あなたのチップもコピーしました.頭を働かせて考えてみます。

ただ、Bid変数の値(最後のティックの価格)を1とするのが理解できません。最初の1桁の後に小数点がある6桁の値だと思うのですが...。の値であり

私が誤解している可能性があることを教えてください。

あなたのコードをよく研究しました。

double ld_Delta = 10.* Point;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
and this price is open price of new bar
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123);}//openorder

しかし、私は理解できない

-なぜ、変数massiv[S ]ではなく、変数Priceを 使うことを提案するのですか? 最後のバーの建値が含まれて います。

私の考えでは、注文を開くための必要条件の1つは、最後のティックの価格に最も近い配列の値の1つとそのオープン価格が一致することです。

私の戦略の全容は次のとおりです。

2つの条件を同時に満たした場合のOPEN ORDER

-最後のローソク足の始値

配列の値に最も近い 価格(配列の値 - 約2000の非繰り返し 入札価格の値が ランダムな順序で 並んでいます)で。

ヘルプやヒントをいただけると大変ありがたいです。2日目から......と頭を悩ませていますが、効果はありません。

何が起こっているのかを理解するためには、計算をプリンターに出す必要があるんです。

    //если разница между значением массива возвращенным на последнем тике 
    // и ценой последнего тика отрицательная или = 0.00000
    if ((NormalizeDouble (Bid-massiv[S], Digits) <= 0))
    {
        Print ("massiv[", S , "] = ", massiv[S], " | massiv[", S - 1, "] = ", massiv[S-1], " | massiv[", S + 1, "] = ", massiv[S+1], " | Bid = ", Bid);
        OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыт
    }
と分析する。