MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 56

 

まだ磨きをかけているところです。

が真であれば

オープンオーダー1

ねば

オープンオーダー2

LastLot=オーダー2(またはそれ以上の番号)

LastPrice= order2 (またはそれ以上の数値)

価格が動くべきところに動いていたり、動いていなかったり...。

LastLot=オーダー3(またはそれ以上の数字)。

LastPrice=注文3(またはそれ以上の数字)。

問題は、最後の(あるいはそうでない)注文が常にStopLossとTakeOutの間にあることで、注文自体がまだそこにあるため、他の注文が終了してもリセットされないということです。注文数がわからないのに、どうやってバインドするのか。

最後の1つ目や2つ目のものを束ねる仕組みは、数字とともに数が変わってしまうため、効率が悪いことが判明しました。

結果は、「指定されたシリーズのいずれかの注文がクローズした場合、他のすべての注文をクローズする」のようなものになるはずです。

シリーズチェック - 現在の方向の最初の注文(別の注文は開きません) - 追加の識別子または他のバインディングメソッドをここで使用する必要があります。キー - 最初の注文は条件に従って開かれ、残りの注文は補助的なものである。

ご意見は?

 
trader781:

まだ磨きをかけているところです。

が真であれば

オープンオーダー1

ねば

オープンオーダー2

LastLot=オーダー2(またはそれ以上の番号)

LastPrice= order2 (またはそれ以上の数値)

価格が動くべきところに動いていたり、動いていなかったり...。

LastLot=オーダー3(またはそれ以上の数字)。

LastPrice=注文3(またはそれ以上の数字)。

問題は、最後の(あるいはそうでない)注文が常にStopLossとTakeOutの間にあることで、注文自体がまだそこにあるため、他の注文が終了してもリセットされないということです。注文数がわからないのに、どうやってバインドするのか。

最後の1つ目や2つ目のものを束ねる仕組みは、数字とともに数が変わってしまうため、効率が悪いことが判明しました。

結果は、「指定されたシリーズのいずれかの注文がクローズした場合、他のすべての注文をクローズする」のようなものになるはずです。

シリーズチェック - 現在の方向の最初の注文(別の注文は開きません) - 追加の識別子または他のバインディングメソッドをここで使用する必要があります。キー - 最初の注文は条件に従って開かれ、残りの注文は補助的なものである。

何か感想はありますか?

不明である。自分の考えをもっと明確に表現するようにする。

これは、「価格が正しい方向に行くかどうか、注文2を開くべきだ」ということですが、「どんな場合でも注文2を開くべきだ」というのは、どう理解すればいいのでしょうか。

そして、「さもなくば」がどんどん増えていくのです。

また、「価格の金額がわからないのに、どうやって残りの注文に つなげるのか」といった疑問を持たれたくないのであれば、まず金額を把握することです。

 
Vitalie Postolache:

混乱し、理解しがたい。自分の考えをより明確にするようにする。

だから、この"価格が正しい方向に移動したかどうか - 注文2を開くには" - どのように我々はどのような場合には"注文2を開くには"と理解するのでしょうか?

そして、「さもなくば」がどんどん増えていくのです。

また、「金額がわからないのにどうやって残りの注文に つなげるのか」といった疑問が湧いてこないようであれば、まずは金額を調べるべきでしょう。

数字でOK

EURUSD=1.10000

TPに応じた買い注文を出すコマンド(すでに記述済み)

EURUSD=1.10200の場合、買い注文を出します(すでに書きました)。

EURUSD=1.09800で「買い」(すでに書かれています)の場合

というように、200のステップで

いずれかの注文が終了した場合(ストップやテイクオーバーは設定されているが、そのすべてではありません。)

グリッド全体を閉じる

グリッドを特定する方法を探している
 
trader781:

数字でOK

EURUSD=1.10000

現在値でTPに従って買い注文を出すコマンド(すでに書き込まれている)

EURUSD=1.10200で買い注文に追加する場合(すでに書きました)。

EURUSD=1.09800で「買い」(すでに書かれています)の場合

というように、200のステップで

注文が一件落着したら(ストップやテイクオーバーは既に発注されている)

グリッドを閉じる

グリッドを識別する方法を探している
注文番号と一緒にコメントを追加することができます。また、注文シリーズが同じ種類であれば、それらを再計算して金額を確定させるだけかもしれません。
 
Vitalie Postolache:
注文番号を記載したコメントを追加することができます。また、一連の注文が1種類である場合は、単純に再計算して数量を確定する必要があります。

コメントについて考えていたのですが、フィードバックから判断すると、シェフは食べられないと思い、削除するか、自分のものに変えてしまうのでしょう

また、数え方ですが、もう1つ増やすときに数を数えて記録しなければならないのですね。

 
trader781:

とカウントについてですが、もう1つ追加するときは、量を数えて記録しなければならないのでしょうか?

また、前回より数が減っている場合は、残っているものをすべて閉じます。

また、終了した注文を履歴で監視することができます。そして、指定された特性を満たす新しい注文が現れたら、シリーズを終了する。

また、注文時にTP/SLを設定せず、Expert Advisorで全シリーズのTP/SLを合計して計算することも可能です。シリーズの締めくくりに使ってください。利点 - 証券会社は、ブレークポイントのレベルが表示されませんし、シリーズを見つけるの問題は、TPまたはSLが1順序でトリガされた場合に残っています。
 
ご挨拶...ハッピーニューイヤー...すべてのベストと繁栄を願って...このコードでは、ロットの計算を変更してください最大可能なレバレッジアカウントで実施されました。
//+------------------------------------------------------------------+
double volume(string symbol,double risk,double sl)
  {
   double lot=0.0;
   double procent=0.0;
   double balans=0.0;
   double tc = SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE);
   double tv = SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE);
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);

   if(Type_Balanse==Balance) balans=AccountInfoDouble(ACCOUNT_BALANCE);
   if(Type_Balanse==Equity) balans=AccountInfoDouble(ACCOUNT_EQUITY);
   if(Type_Balanse==FreeMargin) balans=AccountInfoDouble(ACCOUNT_FREEMARGIN);

   procent=(balans/100.0)*risk;

   switch((int)MarketInfo(symbol,MODE_PROFITCALCMODE))
     {
      case 0: if(sl!=0 && tv!=0) lot=procent/(sl*tv);break;
      case 1: if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
      case 2: if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break;
     }
   return(NormalizeVolume(symbol,lot));
  }
 
Expert Advisorでロットの自動計算を規定する方法、レバレッジに応じて...レバレッジ1:50の預金3000とする。
 
Movlat Baghiyev:
簡単な質問ですが、レバレッジに応じてロットを自動計算するようにEAを設定するにはどうすればよいでしょうか。 例えば、レバレッジが1:50で、保証金が3000...とします。

こんな風に試してみてください。

void OnTick()
{
  Comment( cLot(100) );
}
//===============================================================================================
//------------------------------------ Расчет лота по риску ------------------------------------+
//===============================================================================================
double cLot(double Percent=0) {
double Free=AccountFreeMargin(),
        One_Lot=MarketInfo(_Symbol,MODE_MARGINREQUIRED),
        Min_Lot=MarketInfo(_Symbol,MODE_MINLOT),
        cStep=MarketInfo(_Symbol,MODE_LOTSTEP),
        Lots_New=0;
if(Percent > 100) {
    Percent = 100;
  }
  if(Percent == 0) {
    Lots_New = 0;
     return(0);
   } else {
    Lots_New = MathFloor(Free*Percent/100/One_Lot/cStep)*cStep;
   }
  if(Lots_New < Min_Lot) {
    Lots_New = Min_Lot;
  }
  if(Lots_New*One_Lot > Free) {
    return(0);
  }
   return(NormalizeDouble(Lots_New,LotDigit()));
}
//===============================================================================================
//-------------------- Кол-во знаков после точки в значении торгового лота ---------------------+
//===============================================================================================
int LotDigit(){
  double lotStep = MarketInfo(_Symbol,MODE_LOTSTEP);
return((int)MathCeil(MathAbs(MathLog(lotStep)/MathLog(10))));
}
 
申し訳ありませんが、リスク%の選択が必要です。 一度に最大ロットを、最大0.01の単位でオープンする必要があります。