どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 962

 
rapid_minus:

私は完全に混乱しているので、明らかにしてください。

利益あり、マイナスありの注文をクローズするスクリプトを見つけたのですが、外部変数にclose_only_profit_orders=falseを設定し、f-i startでそれを否定してチェックするロジックがよくわかりません。if(OrderType()==OP_BUY && (!close_only_profit_orders || order_prof>0).つまり、falseでない場合、または利益が出ている注文がある場合は、OrderClose()関数に従います。しかし、コードのどこにも、変数close_only_profit_ordersがtrueになる条件がない。では、何のために?


この変数で見つかるものは何もない。これはプログラマーの想像の産物で、EAに何が入っているかは開発者だけが知っています。どのような理由でこのようなことが起こりうるのか、どのように確認すればよいのか、推測するしかない。動作開始前に全ペアの注文をバカスカ決済するEAに出会ったんだがまあ、それはプログラマーの想像の産物なんだけどね。したがって、Expert Advisorが正常に動作するのであれば、どこにどのような理由で注文を閉じるように書かれているのかを探さなければなりません。もしかしたら、違うマジシャンが役に立つかもしれない。
 

問題解決のためにご協力をお願いします。

int n1=......;

int n2=......;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i);

コメントにn1とn2の値を表示すると、値は正しいのですが、マウスが正しく描画されず、チャート全体には表示されません。しかし、これらの変数の代わりにn1、n2の値を手で入力すると、すべてその通りに描画されるのです。変数の値が正しいのに、どうしてそうなるのか理解できないのですが?チャートを右側にオフセットして 描画させるには?現在はゼロバーまで、つまり現在のバーまでしか描画されません。

 
Alexandr24:

問題解決のためにご協力をお願いします。

int n1=......;

int n2=......;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i);

コメントにn1とn2の値を表示すると、値は正しいのですが、マウスが正しく描画されず、チャート全体には表示されません。しかし、これらの変数の代わりにn1、n2の値を手で入力すると、すべてその通りに描画されるのです。変数の値が正しいのに、どうしてそうなるのか理解できないのですが?チャートを右側にオフセットして描画させるには?現在はゼロバーまで、つまり現在のバーまでしか描画されません。

n1がTFの値と等しくないのであれば、正しく描画されないのは理解できるのですが。しかし、右にシフト するとn2プラスになる! チェック済みです。
 
borilunad:
n1がTF値と等しくないのであれば、正しく描画されないのは理解できるのですが。また、右にシフトすると、n2がマイナスになる。

TFとの関係がよくわからないのですが、n1はインジケータを計算するための平均化期間です。というのも、"崖っぷち "だからです。

UPD. n2の代わりに0を入れると、シフトはOKですが、n1がちょっと変です :(

 
double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период - n1    
   int          ma_shift,         // сдвиг средней - n2
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг
   );

そうなんだ!間違っていたのは私ですが、正しいやり方ならうまくいかないはずはないでしょう!?

 
borilunad:

そうなんだ!間違っているのは私の方なのに、どうしてちゃんとやっているのにうまくいかないんだ!

そうですね、このパラドックスには私も困惑しています。ターミナルを再起動すれば、ワゴンはそのまま描画されますが、いちいち再起動するのは不便です。

UPD 右ボタン押してメニューから「更新」を選択することで解決しましたが、コード内でコンパイルを押すと描画がぐちゃぐちゃになってしまいます...が、それは些細なことなので、とりあえず更新してみます :))

 
Alexandr24:

このパラドックスにも困惑しています。ターミナルを再起動すれば、そのままワゴンが描画されるのですが、いちいち再起動するのは不便です。

UPD 右クリックでメニューの「更新」を選択することで解決しましたが、コード内でコンパイルを押すとワゴンの描画がおかしくなります...が、これは些細な問題なので、更新することにします :))。

コードの断片だけでなく、コードを表示する
 

自分で解決しました。ご意見ありがとうございました :)

 
ご挨拶、ALL!
フォーラムやインターネットで探したのですが、見つかりませんでした。だからこその質問です。

1.EAが(MAとのクロスオーバーに基づき)同じ価格で複数の(3)成行注文を開く(例:1.1180で買い)。

MAを超える前の注文は買い逆指値注文でした。

2.次に、Expert Advisorは、これら3つのTakeprofit注文を異なるレベルに設定します(標準のフィボインジケーターによると、MAと交差したときにのみ決定されます)。

これらのレベルを以下のように仮定する。
Ur1 = 1.1200
Ur2 = 1.1220
Ur3 = 1.1240

そして、今度は質問です。
未決済注文に定義されたレベルを設定する方法は?

フォーラムでそのような構造を発見したのですが(下記参照)、それ以上は思いつきません。何を探しているのかわからないなら、むしろどうすればいいのかのヒントが欲しいですね。
別のカウンターが必要ですか?でも、どうやって?それとも、アレイやマジックを使わなければならないのか...。????

double Ur1 = 1.1200
double Ur2 = 1.1220  
double Ur3 = 1.1240
for(int i=OrdersTotal()-1;i>=0;i--) 
{
   if(OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)==false) continue;
   if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()!=0) continue;
                   
   // вот тут мы можем работать с нашим ордером
   
   if (OrderTicket() = ???? );
 
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);


}  

 
vadimvborisov:
この与えられた水準で、どのようにオープン・スリー・オーダーを配置するのでしょうか?

1.注文がオープンされたときに、適切なTPを設定することを妨げるものは何ですか?
2.このmod_Buy1/2/3は何ですか?- 上記のフォーサイクルの趣旨はご理解いただけましたか?