マーケットで公開されているEAにおける最小ストップの確認。 - ページ 16

 
Vladislav Andruschenko:

スプレッドを考慮した場合、スプレッドは8pipsでした。+ 分 ストップ 18=26 pips

27はOKです。

そしてさらに、100pipsのストップロスを置く必要がある場合、それは100pipsを失うことを意味しますので、ASC価格からのBAYの場合、100pipsを数える必要があります。

とBIDから販売するためにそれぞれ使用します。

SLをどこに置くかは言っていない。チェックするときにどのような値段にするかと言ったのです。
 
Andrey Khatimlianskii:
SLをどこに置くかは言っていない。チェックするときに、どのような値段にするかということを言いました。
ありがとうございます。そのオプションもカウントされます。
 
Taras Slobodyanik:

ブローカーが理不尽なストップレベルを提示した場合、どうして推測できないのでしょうか? %)

...すべてのチェックの後、最小インデントを 知るために推測する必要があることは明らかです。

レイアウトで推測することはできません。すべてを知らなければならない。事前に一つのミスも犯さないように。サーバーからのミスはエラーにならないと思っていますが。警告なんです。
 

私はEAを マーケットで販売 した経験はありませんが、すべての意見を読んだ後、私の5セントを追加します。

メニューでいくつかのオプションを選択してみることができます

1 Variant - Default.この時、MODE_STOPLEVELで min stopが全て決定される。注文の各アクションの前に必ず新しいSTOPLEVELを要求して ください。

2 変形、MODE_STOPLEVEL == 0 ならば、ストップはスプレッドを左に する。

3 オプションとして、独自のストップレベル、またはスプレッドに乗じた何らかの倍率を手動で設定します。

制御の導入が必要である。EAがテストまたは最適化されている場合、ストップレベルはスプレッドより低くすることはできません。これによって、StopLoss = 1を含むあらゆるストレステストに合格することができると思います。

 
Dmytro Zelenskyy:

私はEAを マーケットで販売 した経験はありませんが、すべての意見を読んだ後、私の5セントを追加します。

メニューでいくつかのオプションを選択してみることができます

1 Variant - Default.この時、MODE_STOPLEVELで min stopが全て決定される。注文の各アクションの前に必ず新しいSTOPLEVELを要求して ください。

2 変形、MODE_STOPLEVEL == 0 ならば、ストップはスプレッドを左に する。

3 オプションとして、独自のストップレベル、またはスプレッドに乗じた何らかの倍率を手動で設定します。

制御の導入が必要である。EAがテストまたは最適化されている場合、ストップレベルはスプレッドより低くすることはできません。これによって、StopLoss = 1を含むあらゆるストレステストに合格することができると思うのです。

残念ながら、そうではありません。

市場では、すべてが自動的に行われるはずです。

金には3桁の数字がありますが、最後の1桁は四捨五入して0にしなければなりません。

最後の桁は0でなければならないので、丸めるときは数学的なルールに従って丸められ、min stopルールを回避できる方向には丸められない。

もちろん、モデレーターを通すために、マーケットチェックで全レベルをストップレベル10に入れる-という、いわばスルーもできるのですが、きちんと処理したいですからね。

買うときは切り上げ、売るときは切り下げないといけないんです。

 
Vladislav Andruschenko:

残念ながら、そうではありません。

市場では、すべてが自動的に行われるはずです。

さて、ここで金の新しいトリックです。3桁の相場がありますが、最後の桁は丸めなければなりません、つまり、最後の桁は0でなければなりません。

最後の桁は0であるべきで、丸めるとき、数学的なルールで丸め、最小停止ルールを回避できる側には丸めません。

もちろん、モデレーターを通すために、マーケットチェックで全レベルをストップレベル10に入れる-という、いわば「スルー」でもいいのですが、きちんと処理したいですからね。

買うときは切り上げ、売るときは切り下げないといけないんだ.........................あっ

私も金や銀をテストするときにこの問題に直面したことがあります。

double NormalizePrice(string symbol,double value)
  {
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   if(ts==0)return(value);
   return(NormalizeDouble(value/ts,0)*ts);
  }

使用例

      double ask=NormalizeDouble(SymbolInfoDouble(symbol,SYMBOL_ASK),digits);
      if(NormalizeDouble(NormalizePrice(symbol,ask),digits)!=ask)return;
 

例えば、私の利益確定と損切りの関数はこんな感じです。

void ModifyTP(string symbol,double tp)
  {
   if(tp<=0)return;
   bool res;
   double last=SymbolInfoDouble(symbol,SYMBOL_LAST);
   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
   double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
   int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);

   if(last<=0.0)
     {
      bid=SymbolInfoDouble(symbol,SYMBOL_BID);
      ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
     }
   else
     {
      bid=SymbolInfoDouble(symbol,SYMBOL_LAST);
      ask=SymbolInfoDouble(symbol,SYMBOL_LAST);
     }

   if(bid<=0.0)return;
   if(ask<=0.0)return;

   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderSymbol()!=symbol)continue;
      if(OrderType()>1)continue;
      if(OrderTakeProfit()!=0)continue;

      if(OrderType()==OP_BUY) tp=NormalizeDouble(NormalizePrice(symbol,bid+tp*point),digits);
      if(OrderType()==OP_SELL) tp=NormalizeDouble(NormalizePrice(symbol,ask-tp*point),digits);
      if(tp<0)continue;
      res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0);
      if(!res)
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying TakeProfit order ",StrToType(OrderType())," №- ",error," ",ErrorDescription(error)," Ticket: ",OrderTicket());
         Print(rezult);
        }
     }
  }
 
Sergey Gritsay:

また、金と銀でテストするという問題に直面し、次のような関数を書きました。

使用例

mt5サーバーでゴールドを使用する場合 - 小数点以下3桁ですが、ストップとオープンプライスは!!!!それでも小数点以下2桁で勝負したい場合は、小数点以下3桁ではなく、小数点以下2桁に切り上げます。また、金や銀のmin.stopを使ったユーモラスなトリックを見ることができるかもしれません。

このように

   request.tp=NormalizeDouble(request.tp,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);
   request.sl=NormalizeDouble(request.sl,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);
   request.price=NormalizeDouble(request.price,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);

ここで、金mt5のRounding=は1です

四捨五入しないと、価格が間違っていると通知されますが、四捨五入すると、サーバーが正しい価格に修正し、取引が終了されます。

mt4にはそのようなクセはなく、小数点以下は2桁あり、問題なく切り上げられます。

エラー130についての私の個人的な意見です。

エラー130のチェックはすべて行っています。また、エラーログも出力されています。

ノーマライゼーションもある。

マーケットプレイスでは、それぞれミニストップ、+スプレッドに正規化させられた(例えば、ASK価格から買って、BID価格でミニストップを確認する)。

つまり、 ユーザーが EAを使用して、例えば20ポイントのストップロスを設定した場合、EAは自動的に50ポイント(MinStop + Spread)を上書きするはずですが、これは正しくありません。トレーダーはエラー130を確認し、自己責任でストップを修正しなければならない。

別のオプション - ユーザーが最小値よりも低いストップロスを設定した場合 - モデレータが130のエラーでExpert Advisorを許可しないため、取引と修正を禁止する。

でも取引禁止は おかしい、ストップとスプレッドが浮いてる、今は最低ライン以下だー、ならOK。

そのようなアプローチでマーケットを利用するのは良くないと思うのです。

IMHO: 130エラーは、Expert Advisorからではなく、サーバーから130番目のエラーが表示されるはずです:「あなたのストップは最小値を下回っています、修正してください」。

市場ルール:エラー130を生成するExpert Advisorをスキップしない - チェッカーはストップロスに1ポイントを入れているため - まあ、これは失敗です。

Expert Advisorのバージョンは1つで、同じものが渡される場合とそうでない場合があります。

私はバージョンを投稿しました - すべてがOKです、しばらくして私はEAがたくさん印刷することを見た(ちょうどストップロスが最小値よりも小さいという事実)、私はすぐにそれを修正し、彼らがテストを開始するまで一週間待って、再び私はいくつかのシンボルで130エラーを参照してくださいので、停滞の再び2週間

 
Vladislav Andruschenko:

mt5サーバーのゴールドでは小数点以下3桁ですが、ストップと 値は!!!に設定する必要があります。金と銀の価格を変更する場合、小数点以下2桁に設定する必要があります。つまり、小数点以下3桁に丸めず、金と銀のミニストップでトリックが発生するのです。

このように

ここで、金mt5のRounding=は1です

四捨五入しないと、価格が間違っていると通知されますが、四捨五入すると、サーバーが正しい価格に修正し、取引が終了されます。

mt4にはそのようなクセはなく、小数点以下は2桁あり、問題なく切り上げられます。

エラー130についての私の個人的な意見です。

エラー130のチェックはすべて行っています。また、エラーログも出力されています。

ノーマライゼーションもある。

マーケットプレイスでは、それぞれミニストップ、+スプレッドに正規化させられた(例えば、ASK価格から買って、BID価格でミニストップをチェックする)。

つまり、 ユーザーが EAを使用して、例えば20ポイントのストップロスを設定した場合、EAは自動的に50ポイント(MinStop + Spread)を上書きするはずですが、これは正しくありません。トレーダーはエラー130を確認し、自己責任でストップを修正しなければならない。

別のオプション - ユーザーが最小値よりも低いストップロスを設定した場合 - モデレータが130のエラーでExpert Advisorを許可しないため、取引と修正を禁止する。

しかし、取引を禁止するのは間違って いる、ストップやスプレッドが浮いている、今は最低ライン以下だ-なら問題ないだろう。

そのようなアプローチでマーケットを利用するのは良くないと思うのです。

IMHO: 130エラーは、Expert Advisorからではなく、サーバーから130番目のエラーが表示されるはずです:「あなたのストップは最小値を下回っています、修正してください」。

市場ルール:エラー130を生成するExpert Advisorをスキップしない - チェッカーはストップロスに1ポイントを入れたので - まあ、これは失敗です。

Expert Advisorのバージョンは1つで、同じものが渡される場合とそうでない場合があります。

私はバージョンを投稿しました - すべてがOKです、しばらくして私はEAがたくさん印刷されるのを見ました(ストップロスが最小値よりも小さいという事実だけ)、私はすぐにそれを修正し、彼らがチェックを開始するまで1週間待って、再びいくつかのシンボルで130エラーが再び表示されているため、停滞の2週間

IMHO - 多くのサーバーメッセージ - エラーではなく、戻り値コード。また、いろいろな仕掛けで回避するのではなく、Expert Advisorが判断できるようにすることが目的です。それは、自分の行動に対するサーバーの反応に基づく判断です。そうでなければ、市場を監視し、サーバーとの「通信」に基づいて行動を修正することができない、ただの間抜けなおもちゃになってしまう。

だから、エラー130でモデレータを「ファセット」するのはやりすぎです。私たちは思慮深くなければなりません。Expert Advisorが130回目のエラーの後でもサーバーを叩き続けることと、それに反応して行動を変えることは全く別のことなのです。なぜ、後者が許されないのか?単に誰か(司会者)がEAの作品をじっくり見たくないからなのでしょうか?130を見るような感覚です。-結婚して。EAが独自のロジックでサーバーからそのようなレスポンスを必要とすることは問題ではなく、ただ拒否し、それ以上探さないことが重要なのです。そういうものなのでしょうか?

 
Artyom Trishkin:

IMHO - 多くのサーバーメッセージは、エラーではなく、リターンコードです。そして、それをあらゆる手口で回避するためではなく、Expert Advisorが判断できるようにするために必要なのです。それは、自分の行動に対するサーバーの反応に基づく判断です。そうでなければ、市場を追いかけ、サーバーとの相互の「コミュニケーション」に基づいて行動を修正することができない、ただの間抜けなおもちゃになってしまうでしょう。

だから、130回目のミスをモデレーターに「強制」するのはやりすぎなんです。熟慮すべきは、130回目のエラーの後もExpert Advisorがサーバーを叩き続けることと、それに反応して行動を変えることは、全く別物だということです。なぜ、後者が許されないのか?単に誰か(司会者)がEAの作品をじっくり見たくないからなのでしょうか?130を見るような感覚です。専門家が自分の論理のためにサーバーからそのような応答を必要とすることは問題ではなく、それを拒否することだけが重要であり、それ以上調べないことです。そういうものなのでしょうか?

そのため、私のEAはmin/maxの動きを捉えているため、1pipのストップロスではなく、通常のminレベル+スプレッドでサーバーを叩いていますが、スプレッドが浮いている状態になっています。そのため、EAはサーバーが正常なスプレッドを返すまで、サーバーを叩くことになります。

つまり、開いた瞬間にmin stopをチェックし、値を再構築してからサーバーを叩くのです。しかし、10pipsのストップを置く必要がある場合、minのスプレッドを待って、サーバーを叩く必要があります。