고문 개선 전략 - 페이지 4

 
IRIP :

손절매를 설정하는 방법에 대한 정보는 어디에서 읽을 수 있습니까?

예를 들어 막대 2의 최저값에서 중지해야 합니다.


https://book.mql4.com/ru/trading/index
 
고맙습니다
 

이제 여러 작업

1. 일정 이익 달성 시 손익분기점 전환

2. 도형 또는 고정된 숫자를 따라 트롤

 
IRIP :

이제 여러 작업

1. 일정 이익 달성 시 손익분기점 전환

2. 도형 또는 고정된 숫자에 대한 트롤


쓰기 시작하고 어려움이 생기면 물어보세요...
 
IRIP :
if ( (낮음[0]>낮음[1]) && (낮음[1]<낮음[2]) && (낮음[1]<낮음[2]) && (높음[1]<높음[2]) ) 구매 = 사실;

if ( (높은[0]<높은[1]) && (낮은[0]<낮은[1]) && (높은[1]>높은[2]) && (개방[0]<종가[1]) ) 판매 = 참;


솔레트. 흔적과 손익분기점도 도움이 되지 않습니다. 그리고 이 경우와 같이 패턴을 악용하지 않으면 도움이 되지 않습니다.

 
DYN :


솔레트. 흔적과 손익분기점도 도움이 되지 않습니다. 그리고 이 경우와 같이 패턴을 악용하지 않으면 도움이 되지 않습니다.


솔레트. 그러나 사람은 프로그래밍을 배우고 이것은 그리 나쁘지 않습니다!
 
ktest0 :

솔레트. 그러나 사람은 프로그래밍을 배우고 이것은 그리 나쁘지 않습니다!

그래, 난 동의. 이 친구에게 경의를 표합니다. 처음부터 1커플은 어렵다 - 나 혼자 안다-)-)-)
 
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, //스톱로스, 0이면 변경되지 않음

이익을 취하다 = 0; // 이익을 얻음, 0이면 변경되지 않음

extern int TrailingStop = 20; // 트롤 길이, 0이면 트롤 없음

외부 정수 StepTrall = 0; // trall 단계 - StepTall보다 더 가깝게 정지 손실을 이동합니다.

extern int NoLoss = 10, //주어진 이익 포인트 수로 손익분기점으로 전환, 0이면 손익분기점으로 전환되지 않음

최소 이익 손실 = 0; //손익분기점 전환 시 최소 이익

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

int STOPLEVEL, 시간 표시줄;

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

정수 초기화()

{

}

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

정수 초기화()

{

ObjectDelete("SLb");

ObjectDelete("SL");

}

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

정수 시작()

{

//동안(!IsStopped())

{

// 새로 고침 빈도();

STOPLEVEL=시장 정보(Symbol(),MODE_STOPLEVEL);

이중 OSL, OTP, OOP, StLo, SL, TP;

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

int b,s,OT,OMN;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

OMN = OrderMagicNumber();

if (OrderSymbol() == Symbol())

{

OOP = NormalizeDouble(OrderOpenPrice(), 숫자);

OT = 주문 유형();

OL = OrderLots();

만약 (OT==OP_BUY)

{

price_b = price_b+OOP*OL;

ㄴ++; LB+=OL;

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

}

만약 (OT==OP_SELL)

{

price_s = price_s+OOP*OL;

s++;LS+= OL;

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

}

}

}

}

ObjectDelete("SLb");

ObjectDelete("SL");

만약 (b>0)

{

NLb = NormalizeDouble(price_b/LB, 자릿수);

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

ObjectSet("SLb",OBJPROP_ARROWCODE,6);

ObjectSet("SLb",OBJPROP_COLOR, 파란색);

}

만약 (s>0)

{

NL = NormalizeDouble(price_s/LS,Digits);

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

ObjectSet("SL",OBJPROP_ARROWCODE,6);

ObjectSet("SL",OBJPROP_COLOR, 빨간색);

}

int 티켓;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if (OrderSymbol()==Symbol())

{

OT = 주문 유형();

OSL = NormalizeDouble(OrderStopLoss(), 숫자);

OTP = NormalizeDouble(OrderTakeProfit(), 자릿수);

OOP = NormalizeDouble(OrderOpenPrice(), 숫자);

SL=OSL;TP=OTP;

만약 (OT==OP_BUY)

{

ㄴ++;

if (OSL==0 && 손절매>=STOPLEVEL && 손절매!=0)

{

SL = NormalizeDouble(입찰가 - 손절매 * 포인트, 자릿수);

}

그렇지 않으면 SL=OSL;

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

{

TP = NormalizeDouble(Ask + Takeprofit * 포인트, 자릿수);

}

그렇지 않으면 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(입찰가 - 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("오류 주문 수정 ",GetLastError());

}

}

만약 (OT==OP_SELL)

{

s++;

if (OSL==0 && 손절매>=STOPLEVEL && 손절매!=0)

{

SL = NormalizeDouble(매도 + 손절매 * 포인트, 자릿수);

}

그렇지 않으면 SL=OSL;

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

{

TP = NormalizeDouble(입찰가 - 이익실현 * 포인트, 자릿수);

}

그렇지 않으면 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("오류 주문 수정 ",GetLastError());

}

}

}

}

}

if(IsTesting())

{

if (TimeBar!=시간[0])

{

OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0,"테스트",0,0,Blue);

OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(입찰가,자리수),3,0,0,"테스트",0,0,빨간색);

TimeBar=시간[0];

}

}

//수면(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 버튼 으로 코드를 붙여넣는 방법을 배우십시오!

"책은 위대하다"는 사실은 여전히 증명되어야 합니다! 그 동안, 당신은 탈출 팁에 대해 생각합니다. 그리고 "어려움없이 ...", 아마도 결과를 알거나 알게 될 것이지만 시간은 흐르고 있습니다! 지식이 없으면 아무데도 없습니다!