초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 61

 
Renat Akhtyamov :
OnInit() 에서 Percent 변수에 값이 할당되기를 바랍니다.
백분율 변수는 사용자가 설정합니다. OnInit() 던졌습니다.
 
Michail_David :
백분율 변수는 사용자가 설정합니다. OnInit() 내가 던졌다.
Lot=0인 경우 테스터는 아무 것도 열지 않습니다.
 
Renat Akhtyamov :
Lot=0인 경우 테스터는 아무 것도 열지 않습니다.
내 로트는 백분율을 기준으로 계산됩니다. 테스터는 로트 수를 계산하지만 거래는 없습니다.

 Margin_Percent=AccountFreeMargin()*Percent/100; 

Lots=Margin_Percent/ MarketInfo ( Symbol (), MODE_MARGINREQUIRED );

      Lots_Volume=( MathFloor (Lots)+ MarketInfo ( Symbol (), MODE_LOTSTEP ));

if (Lots>Lots_Volume)
        {
         Lots=Lots_Volume;
        }
       else if (Lots<Lots_Volume)
         Lots= MathFloor (Lots);
       Print ( "Количество лотов : " ,Lots);
       return ;
 
Michail_David :
내 로트는 백분율을 기준으로 계산됩니다. 테스터는 로트 수를 계산하지만 거래는 없습니다.

그러나 코드에서 백분율 설정은 어디에 있습니까?

명령이 로그에 표시하는 내용: Print ( "Number of lot: " ,Lots); ?

 
Renat Akhtyamov :

그러나 코드에서 백분율 설정은 어디에 있습니까?

명령이 로그에 표시하는 내용: Print ( "Number of lot: " ,Lots); ?

#property link        ""
#property version    "1.00"
#property strict
//--- input parameters
input int       Percent= 50 ;
input int       Fast_EMA_Period= 12 ;
input int       Slow_EMA_Period= 25 ;
input int       Signal_Period= 9 ;
input double    Step_PSAR= 0.02 ;
input double    Maximum_PSAR= 0.2 ;
input int       MAGICNUMBER= 413 ;
static datetime New_Time; // Время текущего бара
double Margin_Percent;   //Используемые средства для открытия ордеров
double Lots; //Определение общего количества лотов
double Lots_Volume;
double MacdCurrent; //Параметры MACD основной линии текущего бара
double MacdPrevious1; //Параметры MACD основной линии предыдущего бара
double MacdPrevious2; //Параметры MACD основной линии со смещением на 2 бара
double StopLoss; //Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss; //Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR; //Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

   bool New_Bar= false ;                     // Флаг нового бара
   int ticket,total,cnt;
//---------------------------------------------------------------------------
   New_Time= TimeCurrent ();
   if ( Time [ 0 ]==New_Time) // Сравниваем время
      New_Bar= true ;       // Поймался новый бар
   else if (New_Bar== false ) // Если бар не новый..
다섯 번째 줄에서 백분율이 설정됩니다. 로그 출력: "로트 수 90.0100000001". NormalizeDouble() 을 추가해야 할까요?
 
Michail_David :
다섯 번째 줄에서 백분율이 설정됩니다. 로그 출력: "로트 수 90.0100000001". NormalizeDouble()을 추가해야 할까요?

많은 괜찮습니다.

주문을 여는 논리에서 오류를 찾으십시오.

이러한 경우 일반적으로 주문이 열릴 명시적인 조건을 설정합니다.

 
Renat Akhtyamov :

많은 괜찮습니다.

주문을 여는 논리에서 오류를 찾으십시오.

이러한 경우 일반적으로 주문이 열릴 명시적인 조건을 설정합니다.

명시적 조건이 있는 예를 제공하십시오. 내가 올바르게 이해했다면 루프를 열려면 하나의 조건이 있어야 합니다. 바르게?
 
Michail_David :
명시적 조건이 있는 예를 제공하십시오. 내가 올바르게 이해했다면 루프를 열려면 하나의 조건이 있어야 합니다. 바르게?
로트 계산 직후, 코드 시작 부분에 주문을 열라는 명령을 내리고 테스터가 제대로 작동하는지 확인하십시오. 그런 다음 모든 것을 되돌릴 수 있습니다.
 
Renat Akhtyamov :
로트 계산 직후, 코드 시작 부분에 주문을 열라는 명령을 내리고 테스터가 제대로 작동하는지 확인하십시오. 그런 다음 모든 것을 되돌릴 수 있습니다.
고맙습니다. 오류를 찾았습니다. 제비를 계산한 후에는 반환됩니다. 섰다. 그 때문에 제비뽑기가 열리지 않았다
 
Michail_David :
다섯 번째 줄에서 백분율이 설정됩니다. 로그 출력: "로트 수 90.0100000001". NormalizeDouble()을 추가해야 할까요?
꼭. 그리고 로트 뿐만 아니라 서버로 전송되는 다른 값들도 있습니다. 로트에서 계정에 허용되는 최소값과 최대값을 확인하는 것도 유용하며, 변경 단계에서도 로트가 0.03 단위로 변경될 수 있어 90.01이 작동하지 않는 경우가 있었는데, 적어도 정상화하십시오.