アドバイザーを無料でお書きします - ページ 41

 
Anton Kedo:
この話題は放棄されたようです。
いや、なんで...たまに読まれるんですよ。"グレイルの ようなクールなアイデアがある "みたいなリクエストは、ほとんど通らないんですよ。特にToRがないとね。
 
こんにちは。イラン(マーチンゲール)を改造して、急降下を防ぐという面白いアイデアがあります。そのエッセンスは、ここで説明すると非常に長くなるので、誰がSkypeで説明するかというと、このアイデアのエッセンスです。
 
Evgeniu Semenuta:
こんにちは。イラン(マーチンゲール)を改造して、急降下を防ぐという面白いアイデアがあります。非常に長い説明の本質は、ここで、誰がSkypeでアイデアの本質を説明しようとします。
前の記事を読む!
 

なるほど。表現してみます。価格が下がり、イラン人がすでに買い始めたとしよう。当然、価格がロールバックするまで、あるいは保証金が売り切れるまで、ロットを増やして買うポジションを追加していくのである。以下のバリエーションを試してみたいのですが、価格が10ニーになると、フクロウは15ポイント(過去に出した注文の合計LOS÷2)後に2つの保留注文を 一度に出します。

1注文は、直前の10ニーズの利益水準にストップロスだけを設定する。

2) 直前の10回のベンドの利益水準でストップロス注文、利益15

つまり、ストップロスを設定し、戻って来て、10回のベンドのグリッドを閉じ、2つの負け注文から抜け出ることができます。あるいは相場がしつこく下がって、2番目の注文が利益で閉じて、約10ポイント後に10曲げのネットから別の1つまたは2つのマイナスの注文を入れて、1つまたは2つのマイナスのものを閉じます。2つ目の保留中の注文は、ストップロスをブレークイーブンに引き込み、最後まで待機する。

なんとなく。言葉で説明するのは難しいのですが(。もし興味があれば、Skypeでチャート上で詳しく考え方を説明します。

 
Evgeniu Semenuta:

なるほど。表現してみます。価格が下がり、イラン人がすでに買い始めたとしよう。当然、価格がロールバックするまで、あるいは保証金が売り切れるまで、ロットを増やして買うポジションを追加していくのである。以下のバリエーションを試してみたいのですが、価格が10ニーになると、フクロウは直ちに15ポイントに2つの保留注文(過去に出した注文の合計LOSを2で割ったもの)を出します。

1注文は、直前の10ニーズの利益水準にストップロスだけを設定する。

2) 直前の10回のベンドの利益水準でストップロス注文、利益15

つまり、ストップロスを設定し、戻って来て、10回のベンドのグリッドを閉じ、2つの負け注文から抜け出ることができます。あるいは相場がしつこく下がって、2番目の注文が利益で閉じて、約10ポイント後に10曲げのネットから別の1つまたは2つのマイナスの注文を入れて、1つまたは2つのマイナスのものを閉じます。2つ目の保留中の注文は、ストップロスをブレークイーブンに引き込み、最後まで待機する。

なんとなく。言葉で説明するのは難しいのですが(。もし興味があれば、Skypeでチャート上で詳しく考え方を説明します。

梅干し必至のいつものアイデア!ディテールはもう面白くない!
 

こんにちは、このスレッドでは、オリジナルのEAを作り直すというオプションは考慮されているのでしょうか?その場合、以下はその説明です。

私は洗練される必要があるEAを持っている(それは、取引が許可され、2つのパラメータが満たされていないときに、それ自体で取引を終了しない:終値領域の表示と部分的な終値サイズの表示))ToR 説明:

期間:任意


使用した記号。

ボリンジャーバンド:期間20

外れ値2

附属



ADX:期間14日

附属

レベルを25に設定する



買いシグナル:横ばい時(ADXが25以下の時)、価格がボリンジャーバンドの下限バンド(パラメーターoは注文のオープンポイントを定義、ボリンジャーバンドの 中間から下限バンドまでの 距離を100%と定義、0%はボリンジャーバンドの下限、10%はそれ以上など)で閉じるのを待って、確認ローソク足の終了時に価格が上昇するまで待ちます。買い付けを開始します。注文はボリンジャーのミドルバンドに触れるとパラメータnで閉じられます(パラメータnはパーセントで設定され、どの部分のボリュームが閉じられるかを定義し、ロットではこの値は切り捨てられ、0%は何も閉じないことを意味します)。ストップロスは注文の開始価格に設定され、その後注文はパラメータf(ミドルボリンジャーバンドからアッパーバンドまでの距離を100%とし、パーセントで定義されるパラメータfは価格がそれに達した場合に注文が閉じられるポイントを定義し、0%はアッパーボリンジャーバンド10%は低いポイントなど)でフルクローズされます。)/

売り注文:横ばい時(ADXが25以下の時)、ボリンジャーバンドの上限バンド(oは注文のエントリーポイントを指定、平均ボリンジャーバンドから上限バンドまでの距離は100%、0%はボリンジャーバンドの上限、10%は下など)で価格が閉じるのを待ち、その後、確認ローソクが下値に向かって動いて閉じるまで待ちます。販売を開始します。ストップロスは設定にピップで設定します。オーダークローズはEAのオプションに依存します。オプションのパラメータは後で説明します。オーダーはミドルボリンジャーバンドにタッチしたときにパラメータnでクローズします。(ストップロスは始値で設定され、さらにパラメータfで注文は完全に決済されます。(ミドルボリンジャーバンドからボトムバンドまでの距離を100%とし、パーセンテージで定義されるfパラメータは、価格がそれに達した場合に注文がクローズされるポイントを定義します、ボトムボリンジャーバンドで0%ポイント、10%高い、など)



オプション:

ストップロスはExpert Advisorのオプションで設定することも、全く設定しないことも可能です。ストップロスには2つのタイプがあります:ピップで与えられる通常のストップロスと予想利益に応じたストップロス、つまり注文の価格から反対側のボリンジャーバンド(上または下)までのピップ単位の距離が計算されたときに、注文を出すことができます。オプションでは、係数S(0~1)が設定され、これに潜在的な利益が掛け合わされる。この値はストップロスです。つまり、係数が0.5であれば、ストップロスは潜在的利益の半分に相当します。)

このEAを書いたプログラマーは、ボリンジャーラインに基づく任意のアドバイザーを書くことに主眼を置いており、さらなる改造は予定して いません。添付ファイルには、アドバイザーのベースとなる履歴上の戦略の統計と、VPS上のアドバイザーの半週実行のサンプル(異なる管理で3期実行しました)があります。以下はそのコードです。

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      BBPeriod=20;
input double   BBdeviation=2.0;
input int      ADX=14;
input double   AdxLevel=25;
input double      SL=2000;
input double      TP=0;
input int      Obuy=5;
input int      Osell=5;
input double   Lot=0.1;
input bool     CloseMiddle=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen=false;
bool sellOpen=false;
double _Obuy;
double _OSell;
int TryShots= 3;
int Slippage=50;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   _Obuy=Obuy/100;
   _OSell=Osell/100;

   if(!IsTradeAllowed())
     {
      string message="You must allow trading!";
      Print(message);
      Comment(message);
      return INIT_FAILED;
     }

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevTime;
   datetime currentTime=iTime(Symbol(),0,0);
   if(prevTime==currentTime)
     {
      return;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx=iADX(NULL,0,ADX,PRICE_CLOSE,0,2);

   if(adx<AdxLevel)
     {
      double bbMain1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,2);
      double close=iClose(NULL,0,2);
      if(!buyOpen)
        {
         double bbDown1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,2,2);
         BuyPosition(bbDown1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen=false;
           }
        }

      if(!sellOpen)
        {
         double bbUp1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,1,2);
         SellPosition(bbUp1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen=false;
           }
        }
     }

  }
//+------------------------------------------------------------------+

void BuyPosition(double bbDown,double bbMain,double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if(close<DownProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent>openCurrent)
        {

         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Bid-SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Bid+TP*Point,Digits);
            Print(Ask+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_BUY !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_BUY !"); break; }
              }
            else
              {
               buyOpen=true;
               break;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition(double bbUp,double bbMain,double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if(close>UpProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent<openCurrent)
        {
         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Ask+SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Ask-TP*Point,Digits);
            Print(Bid+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_SELL !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_SELL !"); break; }
              }
            else
              {
               sellOpen=true;
               break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos(int or_tp)
  {
   int i,err,k=OrdersTotal();
//---
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(or_tp==OrderType())
              {
               for(int it=0; it<TryShots; it++)
                 {
                  ResetLastError();
                  RefreshRates();
                  double _price=Ask; if(or_tp==OP_BUY) _price=Bid;
                  //---
                  if(!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if(it>=TryShots) { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                     err=GetLastError();
                     if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*100);
                     else { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                    }
                  else break;

                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+

VPS上で動作するターミナルからのスクリーンショットを追加します: スクリーンショット "1" と "2" は、アドバイザーが自分で取引を開始しない場合の例 です。

画面「Lock」では、Expert Advisorが自ら買いポジションを決済せず、出現した売り条件により売りポジションを開設しています。
注文を受けた」画面、この場合、注文は正しく開封されています。
ファイル:
Pictures.zip  775 kb
a2ji9v3g8.zip  14 kb
Statement.zip  23 kb
 

総利益ですべての注文を閉じるスクリプトを持っている人 - 私たちにそれを送ってください。

ぜひお願いします。

 

仝囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮々は冱~に冱~に冱~に冱~に冱~に冱

実際、「目」、青、赤のマーカーを画面に表示するためにどのような変数を使うのかがわかれば、自分で書いてみることもできますね

 
baikot:

仝囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮囮々は冱~に冱~に冱~に冱~に冱~に冱

実際、「目」、青、赤のマーカーを画面に表示するためにどのような変数を使うのかがわかれば、自分で書いてみることもできますね

インジケーター自体はどこにあるのでしょうか?
 
Victor Nikolaev:
インジケーター自体はどこにあるのでしょうか?
その必要はないんですけどね。デコンパイルを見つけて銭湯に入るだけです。