フラクタルブレイクアウトスタック - ページ 2

 

現在、終了括弧「}」のエラーが発生しています。


しかし、関数を 再確認したところ、すべて正しく処理されています。


別の方法を試してみましたが、引き続きこの同じエラーが発生します。

 
ZacharyRC:

現在、終了括弧「}」のエラーが発生しています。


しかし、関数を再確認したところ、すべて正常に処理されています。


別の方法を試してみましたが、引き続きこの同じエラーが出ています。


エラーは見つ かりました、気にしないでください!
 
ZacharyRC:

こんにちは、deVriesです。


私の最終的なコードでは、多くのピップ後にブレークイーブンに修正ストップロスを入れようとすると、問題が発生します。


何か目立ったエラーはありませんか?

関数の戻り値とは 何ですか?OrderModify()で何が起こっているのか知りたくないですか? OrderSelect()が失敗したらどう なるのですか?

 
if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==(OP_BUY)&&(Move.BE))
{

これはEAのトレードを取得する正しい方法ではない

ポジション0がEAのものであることを確認することはできないので、管理しなければなりません。

ループを使用して、すべてのオープントレードを取得し、次にその方法を選択します。

EAが取引しているSymbol()とEAで指定したMAGICNUMBERを取得します。

.

私のやり方は

 

 for(i = OrdersTotal()-1; i >= 0 ; i--)         //always counting down checking trades
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;     // if false we abort the loop
     if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;   //if selected trade not symbol or magicnumber next one
 
RaptorUK:

関数の戻り値とは 何ですか?OrderModify()で何が起こっているのか知りたくないですか? OrderSelect()が失敗したら どうなるのでしょうか?


今夜必ず読み直します。まだ完全に把握できていないので。
deVries

これはEAのトレードを取得する正しい方法ではありません。

ポジション0があなたのEAのものであることを確認することはできないので、管理しなければなりません。

常にループを使用して、すべてのオープントレードを取得し、次にその方法を選択します。

EAが取引しているSymbol()とEAで指定したMAGICNUMBERを取得します。

.

私のやり方は

前回、for()ループを使っていたのですが、何度かエラーが出て断念しました。また、テキストを読み直しながらやってみます。


皆さん、ありがとうございました。

 
RaptorUK:

関数の戻り値とは 何ですか?OrderModify()で何が起こっているのか知りたくないですか? OrderSelect()が失敗したら どうなるのでしょうか?


今日は少し遅い気がします。MQL4言語は、掲示板ではなく、エラーを見つけるための最高の仲間になり得るのだと、そのことを身に染みて感じています。



TY RaptorUK!

 
ZacharyRC:

今日はちょっと遅いな〜。そのことを心に刻んでから、MQL4言語は、掲示板ではなく、エラーを見つけるための最高の仲間になり得ることを実感しています。

その通りです、100%正解です :-)
 
deVries:

これはEAのトレードを取得する正しい方法ではない

ポジション0がEAのものであることを確認することはできないので、管理しなければなりません。

ループを使用して、すべてのオープントレードを取得し、次にその方法を選択します。

EAが取引しているSymbol()とEAで指定したMAGICNUMBERを取得します。

.

私のやり方は

ああ、なるほど、これなら自分のトレードを循環させて、どれがどれだか見分けられるし、マジックナンバーも合わせられますね。ループが一番いい方法だと思います。

 
ZacharyRC:

ああなるほど、これなら自分のトレードを循環させて、どれがどれだか見分けられるし、マジックナンバーにも合わせられますね。ループが一番いい方法 なんだ。

使えば使うほど、いろいろな技ができるようになるんだ......。
 

まだ困っています。原因究明のため、エラー処理を行いました。


ジャーナルに報告されました。

1)エラー4051=不正なパラメータ

2) 無効な注文変更用チケット

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
if(OrderType()==OP_BUY)
{

 if(Move.BE && StopLoss > 0) 
 {
   if(Bid - OrderOpenPrice() >= Point * StopLoss)
     {
       if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
        {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
 }
  }
   }
    }
 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 }
  }
   }
    }