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

 
DhP:
この場合、EAコードから提供されない限り、MagicNumberは変更されない。

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


解決策

買うため(売るため-類推して)。

1.MAフラクチャー - 3、2、1バーのMA値を取得 - 比較する。3>2、2<1のバーのMA値があれば、ブレイクとなる。

2.それから - フラクタル - 貫通 - 取引をするための合図

MAを列挙する限りは、外部(最適化可能)変数に配置する。

Period_MA(ステップ2で2から240まで設定可能)、MODE - (MAの計算方法 - 0から3の変化の範囲ステップ1)、PRICE_TYPE - (価格定数 - 0から6の変化の範囲ステップ1)、私は、日中の作業時に平均値(終値が重要ではない)でMAカウント、日キャンドルで作業時に日中の終値でMAカウントと聞いたことがあります。

1,5,15,30,60,240...と、最適化が進むごとに手動で変更する必要があります。

iMAのF1キーを押して、もう一度すべてをよく読んでください。

もちろんTPとStop Lossも通常通り最適化します。

追伸:テスト結果のインフォメーションを書くことも忘れずに...。:-)))

TF=1分のテスト結果では、1日1回EAを最適化しても収益性の高いバリエーションは得られなかった。
 
DhP:
ポジションが一部閉じている場合は、マジックを変更することができます。簡単に書けそうですね。

おそらくmql-communityにない知識を持っているか、質問を理解していないか、OrderClose関数でマジコンが変わると素朴に妄想しているのでしょう。

 
gince:

フラグ[i+1]の 初期設定がないのは理解できたのですが。その場合、どこで、どのようにすればよいのでしょうか?

1を設定すると、インジケータを起動したときに、それ(インジケータ)は変化を待つことになります。

正しいやり方はこうだ。

if ((flag[i]==1 || flag[i]==0) && условие продажи)
未初期化フラグ =0 (またはEMPTY_VALUE を取る...) という条件下で
 
sergeev:

正しいことは、これだ。

未初期化フラグ=0(またはEMPTY_VALUEを取る...)という条件付きで

皆さん、ありがとうございました。自分のやりたいことをやった。

 
volshebnik:
TF=1分足でのテスト結果では、1日1回EAを最適化しても、収益性の高いオプションは得られなかった。

TFが低いほどノイズが 多くなる...。
 
Roman.:

TFが低いほどノイズが 多くなる...。
でも、もしストラテジーが正しければ、どんなTFでも、パラメータが違うだけで機能するはずだと思います。TF=5分でのテスト結果も、利益を生むような選択肢はなかった。
 
volshebnik:
でも、もしストラテジーが正しければ、どんなTFでも、パラメータが違うだけで機能するはずだと思います。TF=5分でのテスト結果も、利益を生むような選択肢は得られなかった。

そこは戦略として正しい。今、私は酔っています。休んでいるところです。
 
sergeev:

の場合、コードにエラーがあります。

注意: 保留注文におけるストップとテイクオーバーは、現在の価格ではなく、注文の開始価格に基づいて行われます。



特別な感謝と敬意を表します :))))。

エラーの修正(これで全部だといいのですが :)) + リミッターを追加しました。注文にマジックナンバーを付ける必要がある場合、非常に便利です。

お楽しみに

#property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link      "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int     Magic       = 0;        //уникальный номер ордера
extern bool    BUY         = false;    //открыть ордер BUY
extern bool    BUY_STOP    = false;    //поставить ордер BUY STOP
extern bool    BUY_LIMIT   = false;    //поставить ордер BUY LIMIT
extern bool    SELL        = false;    //открыть ордер SELL
extern bool    SELL_STOP   = false;    //поставить ордер SELL STOP
extern bool    SELL_LIMIT  = false;    //поставить ордер SELL LIMIT
extern double  Lot         = 0.1;      //объем ордера
extern int     takeprofit  = 0;        //уровень выставления TP, если 0, то TP не выставляется
extern int     stoploss    = 0;        //уровень выставления SL, если 0, то SL не выставляется
extern int     DistanceSet = 40;       //расстояние от рынка для отложенника
extern int     slippage    = 3;        //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
   if (BUY_STOP)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Stop");
   }
   if (SELL_STOP)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Stop");
   }
   if (BUY_LIMIT)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Limit");
   }
   if (SELL_LIMIT)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Limit");
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Limit" ) error=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Limit") error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (error==-1) //неудачная попытка
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
 
Roman.:

そこには、本当の意味での不思議さがある。今、私は凧のようにハイになっているんだ。休んでいるんです。
TFに同じ=15分この戦略にはまだ「忠実さ」が見られませんが、まだ先が見えるかもしれません。(おやすみなさい)