포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 747

 
TarasBY :

2) 하나의 막대는 각각 UPPER 및 LOWER 프랙탈을 가질 수 없습니다.

프로그래머 바보의 범주에 속합니다.

글쎄, 그런 인용문은 바보만을위한 것입니다.


 
TarasBY :

2) 하나의 막대는 각각 UPPER 및 LOWER 프랙탈을 가질 수 없습니다.

프로그래머 바보의 범주에 속합니다.


두 프랙탈은 하나의 막대에 있을 수 있습니다.
[삭제]  
Vinin :
두 프랙탈은 같은 막대에 있을 수 있습니다.
그는 몇 분을 의미했지만 몇 달을 잊어 버렸습니다.
 
여보세요

코드에 줄이 있습니다

 if (G_time_344 == Time[ 0 ]) return ( 0 );
내가 이해하는 바에 따르면 고문이 새로운 막대가 나타날 때까지 재계산을 연기한다는 사실에 책임이 있는 사람은 바로 그녀입니다. 영점 막대 의 여는 시간 이 변경될 때까지 재계산이 중지됩니다.

따라서 분에 어드바이저를 열면 새로운 분마다 다시 계산됩니다. 그리고 H4에서 열면 4시간마다 다시 계산됩니다.

어드바이저가 현재 바, 즉 터미널이 열려 있는 바가 아니라 내가 설정에서 지정한 바의 여는 시간을 취하도록 이 줄을 작성하는 것이 어떻게 정확할까요? 즉, 나는 고문을 H4에 매달고 내가 그렇게 요청했기 때문에 그는 5분마다 다시 계산할 것입니다. 또는 매분.


 
_new-rena :
그는 몇 분을 의미했지만 몇 달을 잊어 버렸습니다.

이들분그리고 월의 차이점은 무엇인가요?


 
evillive :
수정할 때 로그에 있는 내용에 대해 불평합니까? 제한이 없기 때문에 "바보로 새 예금을 엽니 다"하지만 OrderSend가 있습니다.
오류 없음, 노란색 삼각형만 있음
[삭제]  
AlexeyVik :

분은 월과 어떻게 다릅니까?

동의합니다. M1에는 즐거운 순간이 있습니다. 그러나 모든 바에서 몇 달 동안 그렇게.
 
나는 질문을 제거하고 스스로 알아 냈습니다.
 
TarasBY :

1) 모든 전략은 동시에 열린 주문의 수로 결정되어야 합니다. 따라서 다음 주문을 열기 전에 이미 몇 개의 주문이 열려 있는지 확인해야 합니다.

2) 하나의 막대는 각각 UPPER 및 LOWER 프랙탈을 가질 수 없습니다.

프로그래머 바보의 범주에 속합니다.

3) 버퍼 인디케이터의 값을 반환하기 위한 조건을 작성하기 전에 "비어 있는" 값이 정확히 무엇인지 알아야 합니까? 0인지 확인하셨나요?

4) 건설

(대부분의 경우) 작동하지만 개발자의 "자유로운 발명"이며 거래자의 작업에 정보가 없기 때문에 부자연 스럽습니다. 대안은 새 막대를 추적하는 것입니다.

5) 다음과 같이 기본부터 시작해야 합니다.

당신이 쓰는 것을 전혀 이해하지 못한다고 말합니다.

이해하는 가장 좋은 방법은 다른 사람의 코드를 연구하고 자신의 목적에 맞게 수정하는 것입니다. 행운을 빕니다.

그는 쓰여진 대로 그것들을 지적합니다. 그는 그것들을 수정하지 않습니다. 당신이 그것에 대해 한 마디도 하지 않았습니다. 전체 코드는 다음과 같습니다:
 //+------------------------------------------------------------------+
//|                                                   Strategy 3.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright ""
#property link        ""
#include <Library1.mqh>
extern int Magic= 111 ;
extern int TP= 20 ;
extern int SL= 30 ;
extern int Trall_dist= 10 ;
extern int Shag= 10 ;
extern bool Isp_shag= false ;
extern bool Isp_bezubitok= false ;
extern double Lot= 0.1 ;
double SS= 0 ,BS= 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   double tp,sl;
   if ( Digits == 3 || Digits == 5 ) {tp=TP* 10 * Point ;sl=SL* 10 * Point ;} // условие для пятизнака
   else if ( Digits == 2 || Digits == 4 ) {tp=TP* Point ;sl=SL* Point ;} // условие для четырехзнака
   double Up= iFractals ( Symbol (), 0 ,MODE_UPPER, 3 );       //верхний фрактал,формируется на третьей свече
   double Down= iFractals ( Symbol (), 0 ,MODE_LOWER, 3 );     //нижний фрактал,формируется на третьей свече                                                   
//----
   if (Up> 0 &&Down== 0 &&Volume[ 0 ]< 2 )     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
     if ((High[ 3 ]+ 5 * Point -Ask)/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green);//выставляем отложенный на покупку
     else {BS=High[ 3 ]+ 5 * Point ; Print ( "Виртуальный BS:" ,BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        {
         for ( int pos= 0 ;pos== OrdersTotal ();pos++)
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
         if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+ 5 * Point ,High[ 3 ]-sl,High[ 3 ]+tp, 0 ,CLR_NONE);
          }
        }
     
       }   
   else if (Up== 0 &&Down> 0 &&Volume[ 0 ]< 2 )
    {
     if ((Bid-Low[ 3 ]- 5 * Point )/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL))
     OrderSend ( Symbol (),OP_SELLSTOP,Lot,Low[ 3 ]- 5 * Point , 20 ,Low[ 3 ]+sl,Low[ 3 ]-tp, NULL ,Magic, 0 ,Red);
     else {SS=Low[ 3 ]- 5 * Point ; Print ( "Виртуальный SS:" ,SS);}
         {
         for (pos= 1 ;pos== OrdersTotal ();pos++)
             {
             OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
             if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_SELLSTOP)
               {
               OrderModify(OrderTicket(),Down- 5 * Point ,Low[ 3 ]+sl,Low[ 3 ]-tp, 0 ,CLR_NONE);
               } 
             }
         }
    
            
     if ( OrdersTotal ()> 0 )
    Trailing_stop(Magic, Symbol (),Trall_dist,Shag,Isp_shag,Isp_bezubitok);
     return ( 0 );
  }}
//+------------------------------------------------------------------+
읽고,보고,이해한대로 글을 쓰려고합니다.당신의 비판은 MQL4에 대한 교과서와 비슷합니다-누군가가 그것을 씹어야 이해할 수 있습니다.구매에 대한 내 코드에서와 같이 러시아어 :)
 
if (Up> 0 &&Down== 0 &&Volume[ 0 ]< 2 )     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
     if ((High[ 3 ]+ 5 * Point -Ask)/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green); //выставляем отложенный на покупку
     else {BS=High[ 3 ]+ 5 * Point ; Print ( "Виртуальный BS:" ,BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
         { // К чему относится эта скобка???
         for ( int pos= 0 ;pos== OrdersTotal ();pos++)
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
         if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+ 5 * Point ,High[ 3 ]-sl,High[ 3 ]+tp, 0 ,CLR_NONE);
          }
       } // это пара к той...
      }
     


그리고 이 코드는

 if ( Digits == 3 || Digits == 5 ) {tp=TP* 10 * Point ;sl=SL* 10 * Point ;} // условие для пятизнака
   else if ( Digits == 2 || Digits == 4 ) {tp=TP* Point ;sl=SL* Point ;} // условие для четырехзнака

init()에 작성하는 것이 좋으며 하지 않는 것이 좋습니다.

 double    point; // на уровне глобальных переменных

int OnInit ()
{
   point = Digits % 2 == 0 ? _Point : _Point * 10 ;
}

그런 다음 start()에서

tp = High[ 3 ]+TP*point;