[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 315

 
ストラテジーテスターに パス回数の制限があるかどうかご存知ですか?テスターを走らせたところ、テスト開始時のバーの上の左下に、:0/1280(25706)と表示されました。25コペイカを数えたが、これはすべての可能な組み合わせの数である。しかし、彼は、1088/1280(25706)の時点でテストを終えていた。では、彼は1088回しかパスを出していないのですか?最初の2桁の数字にはどんな意味があるのでしょうか?
しかも、そのカウントの仕方がおかしい。3つのパラメーターの基準をもう1つ加えると、25個が3倍になるわけではなく、40kozとか出てくるのだ。不具合なのか、どこか間違っているのか。
 
AndrejFX:
ストラテジーテスターにパス回数の制限があるかどうかご存知ですか?テスターを走らせたところ、テスト開始時のバーの上の左下に、:0/1280(25706)と表示されました。25kozを数えました。これは、すべての可能な組み合わせの数です。しかし、彼は、1088/1280(25706)の時点でテストを終えていた。では、彼は1088回しかパスを出していないのですか?最初の2桁の数字にはどんな意味があるのでしょうか?
しかも、そのカウントの仕方がおかしい。3つのパラメーターの基準をもう1つ加えると、25個が3倍になるわけではなく、40kozとか出てくるのだ。不具合なのか、どこか間違っているのか。
マニュアルを読めば、個人的に詳しく書いてあります。
 

末尾のコードを整理してください!

直前のローソク足のHighまたはLowレベルから「TrailingStop」距離で、すでに開いているStopLossesを検索する必要があります。Expert Advisor を起動すると、最初のオープントレードでの注文のみ動作します。StopLossがトリガーされ、次の取引が開始されると、StopLoss注文はトレールさ れません。私の理解が正しければ、変数"ORDER_SL"が変更されていないため、注文を変更する条件が満たされていないためでしょうか?もしそうなら、その理由と修正方法を教えてください。

以下は、その末尾のコードです。

int ORDER=OrdersTotal();    
OrderSelect(ORDER,SELECT_BY_TICKET,MODE_TRADES);
int ORDER_Type=OrderType();
double ORDER_SL=OrderStopLoss();
double Point_High=iHigh(OrderSymbol(),0,2)-TrailingStop*Point;
double Point_Low=iLow(OrderSymbol(),0,2)+TrailingStop*Point;
            if (ORDER_Type==OP_BUY && ORDER_SL<Point_High){
                    OrderModify(OrderTicket(),OrderOpenPrice(),Point_High,OrderTakeProfit(),0,CLR_NONE);
                    while(!IsTradeAllowed()) Sleep(100);
            }
            if (ORDER_Type==OP_SELL && ORDER_SL>Point_Low){
                    OrderModify(OrderTicket(),OrderOpenPrice(),Point_Low,OrderTakeProfit(),0,CLR_NONE);
                    while(!IsTradeAllowed()) Sleep(100);
            }

以下はEAの全文です。

ファイル:
 

このコード

int ORDER=OrdersTotal();    
OrderSelect(ORDER,SELECT_BY_TICKET,MODE_TRADES);

は、perlに入れるべきでしょう。一番面白いのは、動作はするのですが、テスターでは最初の注文の時だけなんです。

 
Christoff:

トレーリングのヘルプ!!!

TrailingStop "の距離で、前のローソク足のHighまたはLowのレベルから、すでに開いているStopLossesをトラブリングする必要があります。Expert Advisor は起動後、最初のオープントレードの注文でのみ機能します。StopLossがトリガーされ、次の取引が開始されると、StopLoss注文はトレールさ れません。私の理解が正しければ、変数 "ORDER_SL "が変更されていないため、注文を変更する条件が満たされていないためでしょうか?そして、もしそうなら、その理由と修正方法を教えてください。

以下はトロールコードです。

Expert Advisorの全容は以下の通りです。

何かをトローリングする前に、それを選択する必要があります。まず、ターミナルのすべてのオープンポジションを ループし、Expert Advisorによってオープンされているものを選択する必要があります。ループの各反復で、必要な順序が選択された場合、ループから直接トロールを呼び出します。この場合のみ、Expert Advisorがオープンしたすべてのポジションがトロールされます。

だいたいそうです。

void Trailing(string sy, int mn) 
{
   int      i, err, ORDER_Type, k=OrdersTotal();
   double   PointX, ORDER_SL, Point_High, Point_Low;
 
   if (sy=="0") sy=Symbol();
   int    dg=MarketInfo(sy, MODE_DIGITS);
   double pt=MarketInfo(sy, MODE_POINT);
   
   if(dg==5 || dg==3) PointX=pt*10;
   if(dg==4 || dg==2) PointX=pt;
   
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()>1)            continue;
         if (OrderMagicNumber()!=mn)   continue;
               
         ORDER_Type=OrderType();
         ORDER_SL=OrderStopLoss();
         Point_High=iHigh(OrderSymbol(),0,2)-TrailingStop*PointX;
         Point_Low=iLow(OrderSymbol(),0,2)+TrailingStop*PointX;
         if (ORDER_Type==OP_BUY)
            if (NormalizeDouble(Point_High-ORDER_SL,dg)>0) {
            OrderModify(OrderTicket(),OrderOpenPrice(),Point_High,OrderTakeProfit(),0,CLR_NONE);
            while(!IsTradeAllowed()) Sleep(100);
            }
         if (ORDER_Type==OP_SELL)
            if (NormalizeDouble(ORDER_SL-Point_Low,dg)>0) {
            OrderModify(OrderTicket(),OrderOpenPrice(),Point_Low,OrderTakeProfit(),0,CLR_NONE);
            while(!IsTradeAllowed()) Sleep(100);
            }
         }
      if (!OrderSelect(i, SELECT_BY_POS)) {
         err=GetLastError();
         Print("FUNC Trailing: Ошибка выбора ордера - ", err);
         break;
         }
      }
   return;
}

私はあなたのトロールのコードを見ていないが、それはそのまま(私もそれを変更する必要がありますが - StopLevelを超えないようにチェックを追加、または多分何か他のもの)、私は唯一の順序と正規化のループを追加しましたあなたのトロールのコードでダブル値を 比較すると、などなど......有用なものあなたが望めば、きっと解決しますよ :)

ZS.コードを見直したわけではなく、そのまま書いたので、間違いがあるかもしれません。あくまで一例です。

さて、ポジションを検索する必要があるそのコードの場所で、この関数を呼び出します。

Trailing(Symbol(), Magic);
マジック - EAにユニークな整数として設定されたマジックナンバーで、自身の注文を他のEAの注文や、マジックナンバーが全くない手動で開いた注文と区別することができます。
関数呼び出しにSymbol()を残すと、EAが立っているシンボルの位置がターゲットになります。
また、Symbol()の代わりに、ポジションを検索したい通貨ペアの名前に置き換えることもできます。
 
1台のパソコンでMT4端末間の データ交換を最速で行う方法を教えてください。
 
trave:
1台のパソコンでMT4端末間のデータ交換を最速で行う方法を教えてください。

トレードをコピー する必要がある場合は、こちらのコピー機をご利用ください。データのやり取りだけなら、DLLを作る必要がある
ファイル:
kopirowshik.zip  465 kb
 
drknn:

トレードをコピーする場合は、こちらがコピー機です。データのやり取りだけなら、DLL

お幸せに...。:-)))
 
Vinin:

この掲示板に盗作を書き込むのはやめたほうがいい。追放される道だ。

は比喩的な意味で、このターキーは私が最終決定したものです。
 
Roman.:
お幸せに...。:-)))
ウラジミール 総集編を投稿しているのだから、この問題には対処しているはずだ。
ターミナルからターミナルへ、メモリやWindows変数などを介して、つまりファイルを介さずに、一つの変数を転送する簡単なバリエーションは見つかりましたか?
最後のバリエーションとして、ある端末のオンライン上に別の端末のClose[0]ラインを描画 するインジケータがあります。ティックチャートで見ると、この比較は非常にわかりやすい。