[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 229

 
거래가 열리지 않는 이유를 알려주세요 .... 코드가 논리적인 것 같지만 열리지 않고 그게 전부입니다.
 
//+------------------------------------------------------------------+ 
  //| MACD ^^^.mq4 | 
  //| Copyright © 2011, MetaQuotes Software Corp. | 
  //| http://www.metaquotes.net | 
  //+------------------------------------------------------------------+ 
  #property copyright "Copyright © 2011, MetaQuotes Software Corp." 
  #property link "http://www.metaquotes.net" 

  extern int TP = 100; 
  extern int TS = 100; 
  extern int TF = 1; 
  extern double lots = 0.1; 
  int fast_ema = 5; 
  int slow_ema = 34; 
  int signal_period = 5; 
  int slip = 3; 
  int Magic = 1; 

 int total; 
 int ticket; //объявил тотал и тикет 

 //+------------------------------------------------------------------+ 
  //| expert initialization function | 
  //+------------------------------------------------------------------+ 
  int init() 
    { 
  //---- 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 
  //| expert deinitialization function | 
  //+------------------------------------------------------------------+ 
  int deinit() 
    { 
  //---- 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 
  //| expert start function | 
  //+------------------------------------------------------------------+ 
  int start() 
    { 
  //---- 
  
 CheckTicket();
 bool signal = signal_MACD(); 
 AnalyzeSignal(signal); 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 

 bool signal_MACD() 
  { 
    bool signal_MACD = false; 
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       } 
    } 
  } 

 void AnalyzeSignal(bool signal) 
  { 
    double MACD = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0);
    total = OrdersTotal();
    if(total < 0)
    {
      if(signal == true)
      {
         if(MACD > 0)
         {
                ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"покупаем",Magic,0,Green); 
                if(ticket>0) 
                { 
                    OrderSelect(ticket,SELECT_BY_TICKET); 
                    Print("открылись на покупку по цене:", OrderOpenPrice()); 
                } 
                else 
                { 
                    Print("открыться не удалось по причине:", GetLastError()); 
                    return(0); 
                } 
         }
         if(MACD < 0)
         {
               ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продаем",Magic,0,Green); 
               if(ticket>0) 
               { 
                   OrderSelect(ticket,SELECT_BY_TICKET); 
                   Print("открылись на продажу по цене:", OrderOpenPrice()); 
               } 
               else 
               { 
                   Print("открыться не удалось по причине:", GetLastError()); 
                   return(0); 
               } 
         }
         else
            return(0);
      }
    }
  }
  
void CheckTicket()
{
   if(OrderSelect(ticket,SELECT_BY_TICKET))
   {
      if(OrderCloseTime()>0)
      {
         ticket = 0;
      }
   }   
}
 

그런 순간을 모을 수 없습니다. 만들 수 있도록 도와주세요.

예를 들어 구매와 같이 동일한 방향으로 두 개 이상의 열린 주문의 이익으로 영점을 결정해야 합니다.

이 지점에 이익실현을 추가하면 모든 미결 구매 주문에 할당됩니다.

차트에 이익실현을 표시합니다. 즉, 보이도록 합니다.

예를 들어, 우리는 1500의 가격으로 구매하기 위해 첫 번째 주문을 엽니다.

16:00에 두 번째 구매 주문을 엽니다.

그들은 1550에서 영점을 가집니다 + (이익을 취하다 = 20)

여기에서 첫 번째 및 두 번째 주문에 1570의 이익 실현이 할당됩니다. 가격이 이 수준에 도달하면 두 주문이 모두 마감됩니다.

가격이 이 수준을 초과(점프)하면 주문을 추적하고 마감합니다.

매수 주문과 매도 주문을 동시에 기록할 수 있는 동시에 서로 간섭하지 않도록 하는 것이 매우 중요합니다. 한 방향으로 동시에 열립니다.

 
CLAIN :
거래가 열리지 않는 이유를 알려주세요 .... 코드가 논리적인 것 같지만 열리지 않고 그게 전부입니다.
OrdesTotal() 은 절대 음수 값을 반환하지 않기 때문입니다.
 
감사합니다, 좋은 지적입니다.... 수정했습니다... 하지만 여전히 거래를 열지 않습니다.... 어떻게 해야 할까요?
 
CLAIN :
감사합니다, 좋은 지적입니다.... 수정했습니다... 하지만 여전히 거래를 열지 않습니다.... 어떻게 해야 할까요?


아마도 signal_MACD() 함수를 수정하십시오.

글쎄, 그녀는 여전히 뭔가를 반환합니다.

 

안녕하세요.

조건을 제대로 썼는지 알려주실 수 있나요? ( Fractal_point_up_buy 및 Fractal_point_down_buy 매개변수가 정규화되었습니다.)

미리 감사드립니다.

      Fractal_point_up_buy=TF1B;
      Flow_differential_buy=Fractal_point_up_buy-Bid;
       if (timf1s>timf2b && timf2s>timf2b && timf3s>timf2b && timf3s<timf1b)
       {
        Fractal_point_down_buy=TF3S;   
       }
       else
       {
         if (timf1s>timf2b && timf2s>timf2b && timf3s<timf2b && timf2s<timf1b)
         {
          Fractal_point_down_buy=TF2S;   
         }
         else
         {
           if (timf1s>timf2b && timf2s<timf2b && timf3s<timf2b && timf1s<timf1b)
          Fractal_point_down_buy=TF1S; 
         }     
       }
      Fractal_fibo_buy= 100 *Flow_differential_buy/(Fractal_point_up_buy-Fractal_point_down_buy);
 
belck :

그런 순간을 모을 수 없습니다. 만들 수 있도록 도와주세요.

예를 들어 구매와 같이 동일한 방향으로 두 개 이상의 열린 주문의 이익으로 영점을 결정해야 합니다.

이 지점에 이익실현을 추가하면 모든 미결 구매 주문에 할당됩니다.

차트에 이익실현을 표시합니다. 즉, 보이도록 합니다.

예를 들어, 우리는 1500의 가격으로 구매하기 위해 첫 번째 주문을 엽니다.

16:00에 두 번째 구매 주문을 엽니다.

그들은 1550에서 영점을 가집니다 + (이익을 취하다 = 20)

여기에서 첫 번째 및 두 번째 주문에 1570의 이익 실현이 할당됩니다. 가격이 이 수준에 도달하면 두 주문이 모두 마감됩니다.

가격이 이 수준을 초과(점프)하면 주문을 추적하고 마감합니다.

매수 주문과 매도 주문을 동시에 기록할 수 있는 동시에 서로 간섭하지 않도록 하는 것이 매우 중요합니다. 한 방향으로 동시에 열립니다.


1500의 가격으로 열린 포지션의 경우 1570에서의 테이크는 정상이지만(StopLevel이 고려되지 않은 경우) 1600의 가격에서 열린 포지션의 경우 1570에서의 테이크는 오류 130 - 잘못된 스탑을 발생시킵니다. . 결국, 테이크는 매수 의 시작 가격 보다 낮을 수 없습니다. 이것은 이미 StopLoss입니다.
두 위치에 대해 손익분기점을 결정했지만 3-4-5에 대해서는?
먼저 단방향 위치에 대한 손익분기점 공식을 결정한 다음에만 논리를 작성할 수 있습니다.
 
nemo811 :

안녕하세요.

조건을 제대로 썼는지 알려주실 수 있나요? (Fractal_point_up_buy 및 Fractal_point_down_buy 매개변수가 정규화되었습니다.)

미리 감사드립니다.

안녕하세요.

모든 변수가 선언되면 MQL4 구문에 오류가 표시되지 않습니다...

그러면 무엇이 문제입니까?

 
,
artmedia70 :
1500의 가격으로 열린 포지션의 경우 1570에서의 테이크는 정상이지만(StopLevel이 고려되지 않은 경우) 1600의 가격에서 열린 포지션의 경우 1570에서의 테이크는 오류 130 - 잘못된 스탑을 발생시킵니다. . 결국, 테이크는 매수의 시작 가격보다 낮을 수 없습니다. 이것은 이미 StopLoss입니다.
두 위치에 대해 손익분기점을 결정했지만 3-4-5에 대해서는?
먼저 단방향 위치에 대한 손익분기점 공식을 결정한 다음에만 논리를 작성할 수 있습니다.

그것은 모두 우리가 이익을 취하거나 변경하는 시점에 달려 있습니다. 현재 가격 에서 계산됩니다.