출시 후 다음 조건에서 5분 차트의 과정을 따를 전문가 고문: - 페이지 13

 
rid :
세일즈맨77 :
다시 불운.
위의 코드를 작동시키려고 합니다. 다음 텍스트와 함께 오류가 로그에 나타납니다.
18:38:23 '153085': 주문 매도 1.00 GBPUSD 2.0006 sl: 2.0019 tp: 2.0003 실패 [잘못된 S/L 또는 T/P]
무슨 뜻인가요?


1) 어떤 DC에서 MT4를 사용합니까?

2) 이 DC에서 허용 가능한 손절매와 이익실현 거리가 얼마입니까?

http://www.forex4you.org/
그 전에는 어제 모든 것이 그러한 매개변수 t/r 및 s/l로 작동했습니다 :(((
 
rid :
 int start ()
이렇게 하면 되겠다...
그런 식으로 작동하지 않으며 조건이 있습니다. 트랜잭션이 작동하지 않습니다. 잡지는 조용합니다 :(
 
여기에 모든 코드를 게시하세요. 그리고 DC에서 전류에서 정류장까지의 허용 거리를 지정하십시오. 물가
 

계약 사양



상징 이름 마이크로용 1랏
(미니*100용)
증거금(담보)
마이크로
(미니*100용)
확산 제한 및 정지
레벨
수준

교환
구입
교환
판매
EURUSD 유로에서 미국 달러로 1000유로 10유로 2 2 여덟 0.15 -0.51
GBPUSD 영국 파운드 받는 -사람 미국 달러 1000파운드 10파운드
12 0.80 -1.52
 
전체 코드는 다음과 같습니다.
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"

//----
extern string _Parameters_b_Lots = "Параметры модуля расчёта лота";
extern int LotsWayChoice  = 0;     // Способ выбора рабочего лота
                                  //  0-фиксированный,
                                  //  1-процент от депозита,
                                  //  2-фракционно-пропорциональный,
                                  //  3-фракционно-фиксированный,
//extern int LotsPercent   = 40;   // Процент от депозита
extern double StopLoss=13;                               // Stop Loss
extern double TakeProfit=3;                              // Take Profit
//extern int Percent=70;
extern double Lots=1;                                  // Объем сделки в %
extern double Slippage =4;                               // Максимальное отклонение от запрошенной цены
extern int MagicNumber=0;                                // Order ID
extern int Delta=15;                                     // Сигнал приказа в пунктах
//extern int TimeForSleep = 0;                           // Время для отдыха после сделки
extern int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

int start()
{
int total=OrdersTotal();
   if(total<1)                           {// если нет открытых позиций
if (NumberOfBarOpenLastPos("", 0,  -1, MagicNumber)>0){
 
//---
 
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла  больше Delta пунктов - продаем!!!
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал");
if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);}
 
 }
//-------------------------------------------------------------------------
 
if (iOpen(NULL,0,0)-Bid  >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!!
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил");
if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);}
 }
//----
} //if (NumberOfBarOpenLastPos
}//if(OrdersTotal
return(0);
}
//------------------------------
 //+----------------------------------------------------------------------------+
//|  Возвращает номер бара открытия последней позиции или -1.                  |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий таймфрейм)                |
//|    op  - операция                  (-1 - любая позиция)                    |
//|    mn  - MagicNumber               (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) {
  datetime oot;
  int      i, k=OrdersTotal();
 
  if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (oot<OrderOpenTime()) oot=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sym, tf, oot, True));
}

 

라인에 뭔가 문제가 있는듯

 if ( NumberOfBarOpenLastPos ( "" , 0 ,  - 1 , MagicNumber ) > 0 ){

이 조건이 없으면 Expert Advisor가 작동합니다...

왜 거기에 로트 계산을 위한 몇 가지 매개변수를 삽입했습니까? 그것은 필요는 없습니다...

 

//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2008, salesman*** "
#property link      " http://www.forexgrand.ru "
 
//----
extern double StopLoss = 13 ;                               // Stop Loss
extern double TakeProfit = 3 ;                              // Take Profit
//extern int Percent=70;
                               
extern double Slippage = 4 ;                               // Максимальное отклонение от запрошенной цены
extern int MagicNumber = 111111 ;                                // Order ID
extern int Delta = 15 ;                                     // Сигнал приказа в пунктах
 
 int  ticket ;
//-- Подключаемые модули --
#include  < b - Lots . mqh > 
#include < stdlib . mqh >
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ()
그리고 b-lots 라이브러리 자체를 iclude 폴더에 넣습니다.

그리고 각 OrderSend 함수 삽입 전에

  Lots = GetSizeLot () ; 
  ticket = OrderSend ( Symbol ( ... ...

 
rid :
그리고 b-lots 라이브러리 자체를 iclude 폴더에 넣습니다.

그리고 각 OrderSend 함수 삽입 전에

  Lots = GetSizeLot () ; 
  ticket = OrderSend ( Symbol ( ... ...
컴파일 할 때 하나의 오류가 발생합니다.
'Lots' - 변수가 이미 정의됨 C:\Program Files\MetaTrader - E-Global TFG\experts\expert-001.mq4 (21, 15)
코드는 다음과 같습니다.
//+------------------------------------------------------------------+
//|                                                Expert-001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include  <b-Lots.mqh> 
#include <stdlib.mqh>
//----
//extern string _Parameters_b_Lots = "Параметры модуля расчёта лота";
//extern int LotsWayChoice  = 0;     // Способ выбора рабочего лота
                                  //  0-фиксированный,
                                  //  1-процент от депозита,
                                  //  2-фракционно-пропорциональный,
                                  //  3-фракционно-фиксированный,
//extern int LotsPercent   = 40;   // Процент от депозита
extern double StopLoss=13;                               // Stop Loss
extern double TakeProfit=3;                              // Take Profit
//extern int Percent=70;
extern double Lots=0.9;                                  // Объем сделки в %
extern double Slippage =4;                               // Максимальное отклонение от запрошенной цены
extern int MagicNumber=0;                                // Order ID
extern int Delta=15;                                     // Сигнал приказа в пунктах
//extern int TimeForSleep = 0;                           // Время для отдыха после сделки
extern int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

int start()
{
int total=OrdersTotal();
   if(total<1)                           {// если нет открытых позиций
if (NumberOfBarOpenLastPos("", 0,  -1, MagicNumber)>0){
 
//---
 
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла  больше Delta пунктов - продаем!!!
{
Lots=GetSizeLot(); 
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал");
if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);}
 
 }
//-------------------------------------------------------------------------
 
if (iOpen(NULL,0,0)-Bid  >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!!
{
Lots=GetSizeLot(); 
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил");
if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);}
 }
//----
} //if (NumberOfBarOpenLastPos
}//if(OrdersTotal
return(0);
}
//------------------------------
 //+----------------------------------------------------------------------------+
//|  Возвращает номер бара открытия последней позиции или -1.                  |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий таймфрейм)                |
//|    op  - операция                  (-1 - любая позиция)                    |
//|    mn  - MagicNumber               (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) {
  datetime oot;
  int      i, k=OrdersTotal();
 
  if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (oot<OrderOpenTime()) oot=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sym, tf, oot, True));
}
 

나는 당신에게 외부 매개 변수를 남겨 둘 필요가 있다고 썼습니다. 그러면 로트 계산을 위한 매개변수가 PROPERTIES에 배치됩니다(라이브러리에서).

 //+------------------------------------------------------------------+
//|                                                Expert-001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2008, salesman*** "
#property link      " http://www.forexgrand.ru "
#include  < b - Lots . mqh > 
#include < stdlib . mqh >
//----
extern double StopLoss = 13 ;                               // Stop Loss
extern double TakeProfit = 3 ;                              // Take Profit
//extern int Percent=70;
 
extern double Slippage = 4 ;                               // Максимальное отклонение от запрошенной цены
extern int MagicNumber = 0 ;                                // Order ID
extern int Delta = 15 ;                                     // Сигнал приказа в пунктах
//extern int TimeForSleep = 0;                           // Время для отдыха после сделки
int  ticket ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ()
  {
//----
   
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit ()
  {
//----
   
//----
   return ( 0 ) ;
  }
 
int start ()
{
int total = OrdersTotal () ;
   if ( total < 1 )                           { // если нет открытых позиций
//if (NumberOfBarOpenLastPos("", 0,  -1, MagicNumber)>0){
 
//---
 
if ( Ask - iOpen ( NULL , 0 , 0 ) >= Delta * Point ) //Цена выросла  больше Delta пунктов - продаем!!!
{
Lots = GetSizeLot () ; 
ticket = OrderSend ( Symbol () , OP_SELL , Lots , Bid , 3 , Bid + StopLoss * Point , Bid - TakeProfit * Point , " Продал " ) ;
if ( ticket < 0 ){ Print ( " Ошибка открытия ордера SELL # " , GetLastError ()) ; return ( 0 ) ; }
 
 }
//-------------------------------------------------------------------------
 
if ( iOpen ( NULL , 0 , 0 ) - Bid  >= Delta * Point ) //цена упала больше Delta пунктов - покупаем!!!
{
Lots = GetSizeLot () ; 
ticket = OrderSend ( Symbol () , OP_BUY , Lots , Ask , 3 , Bid - StopLoss * Point , Ask + TakeProfit * Point , " Купил " ) ;
if ( ticket < 0 ){ Print ( " Ошибка открытия ордера BUY # " , GetLastError ()) ; return ( 0 ) ; }
 }
//----
//} //if (NumberOfBarOpenLastPos
} //if(OrdersTotal
return ( 0 ) ;
}
//------------------------------
/* //+----------------------------------------------------------------------------+
//|  Возвращает номер бара открытия последней позиции или -1.                  |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий таймфрейм)                |
//|    op  - операция                  (-1 - любая позиция)                    |
//|    mn  - MagicNumber               (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) {
  datetime oot;
  int      i, k=OrdersTotal();
 
  if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (oot<OrderOpenTime()) oot=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sym, tf, oot, True));
} */

확인하다. 작동 여부 한번 실행해보니 잘되네요...

그리고 MM도 작동합니다. 기능을 처리하는 것이 남아 있습니다.

NumberOfBarOpenLastPos(문자열 sym="", int tf=0, int op=-1, int mn=-1)
 
b-lots 라이브러리를 저장했는데 컴파일을 통해 오류를 확인해야 합니까?
경고 팝업:
시작 기능 을 찾을 수 없으며 실행할 수 없습니다.
그게 무슨 뜻이야?