アドバイザーの戦略リファイン - ページ 4

 
IRIP:

ストップロスの設定方法については、どこで読むことができますか?

例えば、Low bar 2でストップする必要があります。


https://book.mql4.com/ru/trading/index
 
ありがとうございました。
 

現在、いくつかの課題があります。

1.一定の利益が出た場合の損益分岐点

2.フラクタルや固定数値によるトローリング

 
IRIP:

現在、いくつかの課題があります。

1.一定の利益が出た場合の損益分岐点

2.フラクタルまたは固定された図形によるトロール


書き始めて、どんどん質問して...。
 
IRIP:
if ( ( (安値[0]>安値[1]) && (安値[1]<安値[2]) && (高値[1]<高値[2]) ) BuyOp=true;

if ( (高[0]<高[1] && (低[0]<低[1] && (高[1]>高[2] && (開[0]<閉[1]) ) SellOp=true ですね。


販売する。そして、トラルもブレイクイーブンもあなたを助けてはくれません。そして、今回のような規則性を利用しなければ、絶対に役に立ちません。

 
DYN:


していただきます。そして、トロールもブレイクイーブンも役に立ちません。また、今回のように規則性を利用しないのでは、絶対に役に立ちません。


そうなります。でも、この人はプログラミングを勉強しているのだから、そう悪くはないだろう!
 
ktest0:

彼はそうする。しかし、人はプログラミングを学ぶものであり、それは決して悪いことではないのです

うん、そうだね。その点では、彼に拍手喝采です。最初は一から勉強するのは大変ですよね、わかります -)-)
 
ktest0:

彼はそうする。しかし、人はプログラミングを学ぶものであり、それは決して悪いことではないのです

そう、私は本当にプログラミングを学びたいのです。
 


本、すごいですね。しかし、例えば、私が必要とすることを概ね行ってくれるアドバイザーを見つけた場合

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

| TrailingStopLight.mq4

//| 著作権 © 2011, Khlystov Vladimir|株式会社日立製作所

//| http://cmillion.narod.ru |

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

#property copyright "Copyright © 2011, cmillion@narod.ru"

#プロパティリンク "http://cmillion.narod.ru"

#property show_inputs

//--------------------------------------------------------------------

extern int Stoploss = 0, //stopploss, if 0, remain unchanged

Takeprofit = 0; //takeprofitは、0であれば、変更されません。

extern int TrailingStop = 20; //トランポ長、もし0ならトレーリングストップなし

extern int StepTrall = 0; //トランップステップ - StopLossをStepTrallより近づけずに移動させます。

extern int NoLoss = 10, //指定した利益ポイント数でブレイクイーブンに移行、0ならブレイクイーブンに移行しない。

MinProfitNoLoss = 0; //ブレークイーブンになるための最小限の利益

//--------------------------------------------------------------------

int STOPLEVEL,TimeBar;

//--------------------------------------------------------------------

int init()

{

}

//--------------------------------------------------------------------

int deinit()

{

ObjectDelete("SLb")。

ObjectDelete("SLs")。

}

//--------------------------------------------------------------------

int start()

{

//while(!IsStopped())

{

//RefreshRates();

STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL)となります。

double OSL,OTP,OOP,StLo,SL,TP;

double Profit,ProfitS,ProfitB,LB,LS,NLb,NLs,price_b,price_s,OL,sl;

int b,s,OT,OMN;

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (オーダーセレクト(i,SELECT_BY_POS,MODE_TRADES))

{

OMN = OrderMagicNumber()。

if (OrderSymbol() == Symbol())

{

OOP = NormalizeDouble(OrderOpenPrice(),Digits)。

OT = OrderType();

OL = OrderLots();

if (OT==OP_BUY)

{

price_b = price_b+OOP*OL;

b++; LB+= OL;

ProfitB+=OrderProfit()+OrderSwap()+OrderCommission()です。

}

if (OT==OP_SELL)

{

price_s = price_s+OOP*OL;

s++;LS+=OL。

ProfitS+=OrderProfit()+OrderSwap()+OrderCommission()です。

}

}

}

}

ObjectDelete("SLb")。

ObjectDelete("SLs")。

if (b>0)

{

NLb = NormalizeDouble(price_b/LB,Digits);

ObjectCreate("SLb",OBJ_ARROW,0,Time[0],NLb,0,0)。

ObjectSet ("SLb",OBJPROP_ARROWCODE,6);

ObjectSet ("SLb",OBJPROP_COLOR,Blue);

}

if (s>0)

{

NLs = NormalizeDouble(price_s/LS,Digits)です。

ObjectCreate("SLs",OBJ_ARROW,0,Time[0],NLs,0,0)。

ObjectSet ("SLs",OBJPROP_ARROWCODE,6);

ObjectSet ("SLs",OBJPROP_COLOR,Red);

}

int OTicket

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if (OrderSymbol()==Symbol())

{

OT = OrderType();

OSL = NormalizeDouble(OrderStopLoss(),Digits)。

OTP = NormalizeDouble(OrderTakeProfit(),Digits)。

OOP = NormalizeDouble(OrderOpenPrice(),Digits)。

sl=osl; tp=otp。

if (OT==OP_BUY)

{

b++;

if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

{

SL = NormalizeDouble(Bid - Stoploss * Point,Digits)です。

}

さもなければSL=OSL。

if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

{

TP = NormalizeDouble(Ask + Takeprofit * Point,Digits);

}

else TP=OTP;

if (NoLoss>=STOPLEVEL && OSL<NLb && NoLoss!=0)

{

if (OOP<=NLb && NLb!=0 && NLb <= NormalizeDouble(Bid-NoLoss*Point,Digits))とする。

SL = NormalizeDouble(NLb+MinProfitNoLoss*Point,Digits);

}

if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

{

StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits)です。

if (StLo>=NLb && NLb!=0) if (StLo > OSL) SL = StLo;

}

if (SL != OSL || TP != OTP)

{

OTicket=OrderTicket()です。

if (!オーダーモディファイ(OTicket,OOP,SL,TP,0,White))Print("OrderModify Error ",GetLastError());

}

}

if (OT==OP_SELL)

{

s++;

if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

{

SL = NormalizeDouble(Ask + Stoploss * Point,桁数)

}

さもなければSL=OSL。

if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

{

TP = NormalizeDouble(Bid - Takeprofit * Point,Digits);

}

else TP=OTP;

if (NoLoss>=STOPLEVEL && (OSL>NLs || OSL==0) && NoLoss!=0)

{

if (OOP>=NLs && NLs!=0 && NLs >= NormalizeDouble(Ask+NoLoss*Point,Digits))

SL = NormalizeDouble(NLs-MinProfitNoLoss*Point,Digits);

}

if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

{

StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits)です。

if (StLo<=NLs && NLs!=0) if (StLo < OSL || OSL==0) SL = StLo;

}

if ((SL != OSL || OSL==0) || TP != OTP)

{

OTicket=OrderTicket()です。

if (!オーダーモディファイ(OTicket,OOP,SL,TP,0,White))Print("OrderModify Error ",GetLastError());

}

}

}

}

}

if (IsTesting())

{

if (TimeBar!=Time[0])

{

OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0, "test",0,0,Blue) を実行します。

OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),3,0,0,「テスト」,0,0,Red)。

TimeBar=Time[0]です。

}

}

//Sleep(1000);

}

}

//--------------------------------------------------------------------

私のにも(理論的には)挿入できるのでしょうか?

 
IRIP:


本、すごいですね。しかし、例えば、私が必要とすることを概ね行ってくれるアドバイザーを見つけた場合

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

//|                                            TrailingStopLight.mq4 |

//|                              Copyright © 2011, Khlystov Vladimir |

//|                                         http://cmillion.narod.ru |

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

#property copyright "Copyright © 2011, cmillion@narod.ru"

#property link      "http://cmillion.narod.ru"

#property show_inputs

//--------------------------------------------------------------------
extern int Stoploss             = 0,//стоплосс, если 0 то не изменяется
           Takeprofit           = 0;//тейкпрофит, если 0 то не изменяется
extern int TrailingStop         = 20;//длинна тралла, если 0 то нет тралла
extern int StepTrall            = 0;//шаг тралла - перемещать стоплосс не ближе чем StepTrall
extern int NoLoss               = 10,//перевод в безубыток при заданном кол-ве пунктов прибыли, если 0 то нет перевода в безубыток
           MinProfitNoLoss      = 0//минимальная прибыль при переводе вбезубыток
//--------------------------------------------------------------------
int  STOPLEVEL,TimeBar;
//--------------------------------------------------------------------
int init()
{

}
//--------------------------------------------------------------------
int deinit()
{
   ObjectDelete("SLb");
   ObjectDelete("SLs");
}
//--------------------------------------------------------------------
int start()                                  
{
   //while(!IsStopped())
   {
      //RefreshRates();
      STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
      double OSL,OTP,OOP,StLo,SL,TP;
      double Profit,ProfitS,ProfitB,LB,LS,NLb,NLs,price_b,price_s,OL,sl;
      int b,s,OT,OMN;
      for (int i=OrdersTotal()-1; i>=0; i--)
      {                                               
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
            OMN = OrderMagicNumber();
            if (OrderSymbol() == Symbol())
            {
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);

               OT = OrderType();
               OL = OrderLots();
               if (OT==OP_BUY)
               {
                  price_b = price_b+OOP*OL;
                  b++; LB+= OL;
                  ProfitB+=OrderProfit()+OrderSwap()+OrderCommission();
               }
               if (OT==OP_SELL)
               {
                  price_s = price_s+OOP*OL;

                  s++;LS+= OL;

                  ProfitS+=OrderProfit()+OrderSwap()+OrderCommission();

               }

            }

         }

      }

      ObjectDelete("SLb");

      ObjectDelete("SLs");

      if (b>0) 

      {

         NLb = NormalizeDouble(price_b/LB,Digits);

         ObjectCreate("SLb",OBJ_ARROW,0,Time[0],NLb,0,0,0,0);                     

         ObjectSet   ("SLb",OBJPROP_ARROWCODE,6);

         ObjectSet   ("SLb",OBJPROP_COLOR, Blue);

      }

      if (s>0) 

      {

         NLs = NormalizeDouble(price_s/LS,Digits);

         ObjectCreate("SLs",OBJ_ARROW,0,Time[0],NLs,0,0,0,0);                     

         ObjectSet   ("SLs",OBJPROP_ARROWCODE,6);

         ObjectSet   ("SLs",OBJPROP_COLOR, Red);

      }

      int OTicket;

      for (i=0; i<OrdersTotal(); i++)

      {    

         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

            if (OrderSymbol()==Symbol())

            { 

               OT = OrderType(); 

               OSL = NormalizeDouble(OrderStopLoss(),Digits);

               OTP = NormalizeDouble(OrderTakeProfit(),Digits);

               OOP = NormalizeDouble(OrderOpenPrice(),Digits);

               SL=OSL;TP=OTP;

               if (OT==OP_BUY)             

               {  

                  b++;

                  if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

                  {

                      SL = NormalizeDouble(Bid - Stoploss   * Point,Digits);

                  } 

                  else SL=OSL;

                  if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

                  {

                      TP = NormalizeDouble(Ask + Takeprofit * Point,Digits);

                  } 

                  else TP=OTP;

                  if (NoLoss>=STOPLEVEL && OSL<NLb && NoLoss!=0)

                  {

                     if (OOP<=NLb && NLb!=0 && NLb <= NormalizeDouble(Bid-NoLoss*Point,Digits)) 

                        SL = NormalizeDouble(NLb+MinProfitNoLoss*Point,Digits);

                  }

                  if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

                  {

                     StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits); 

                     if (StLo>=NLb && NLb!=0) if (StLo > OSL) SL = StLo;

                  }

                  if (SL != OSL || TP != OTP)

                  {  

                     OTicket=OrderTicket();

                     if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

                  }

               }                                         

               if (OT==OP_SELL)        

               {

                  s++;

                  if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

                  {

                     SL = NormalizeDouble(Ask + Stoploss   * Point,Digits);

                  }

                  else SL=OSL;

                  if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

                  {

                      TP = NormalizeDouble(Bid - Takeprofit * Point,Digits);

                  }

                  else TP=OTP;

                  if (NoLoss>=STOPLEVEL && (OSL>NLs || OSL==0) && NoLoss!=0)

                  {

                     if (OOP>=NLs && NLs!=0 && NLs >= NormalizeDouble(Ask+NoLoss*Point,Digits)) 

                        SL = NormalizeDouble(NLs-MinProfitNoLoss*Point,Digits);

                  }

                  if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

                  {

                     StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits); 

                     if (StLo<=NLs && NLs!=0) if (StLo < OSL || OSL==0) SL = StLo;

                  }

                  if ((SL != OSL || OSL==0) || TP != OTP)

                  {  

                     OTicket=OrderTicket();

                     if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

                  }

               } 

            }

         }

      }

      if (IsTesting())

      {

         if (TimeBar!=Time[0])

         {

            OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0,"тест",0,0,Blue);

            OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),3,0,0,"тест",0,0,Red);

            TimeBar=Time[0];

         }

      } 

      //Sleep(1000);

   } 
}
//--------------------------------------------------------------------

私のにも(理論上は)挿入できるのでしょうか?

まず、SRC ボタンでコードを挿入 する方法を学びましょう

その「本は素晴らしい」は、まだまだ実証する必要がありますねとりあえず、ヒントで出ようと思っているんですね。そして「労せずして...」、おそらく結果は分かっているはず、もしくは分かるはず、時間がないのです知識がなければ、どこにも行けない