명령이 로그에 표시하는 내용: Print ( "Number of lot: " ,Lots); ?
#property link"" #property version"1.00" #property strict //--- input parameters inputint Percent= 50 ; inputint Fast_EMA_Period= 12 ; inputint Slow_EMA_Period= 25 ; inputint Signal_Period= 9 ; inputdouble Step_PSAR= 0.02 ; inputdouble Maximum_PSAR= 0.2 ; inputint MAGICNUMBER= 413 ; staticdatetime 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 | //+------------------------------------------------------------------+ voidOnTick () {
bool New_Bar= false ; // Флаг нового бара int ticket,total,cnt; //--------------------------------------------------------------------------- New_Time= TimeCurrent (); if ( Time [ 0 ]==New_Time) // Сравниваем время New_Bar= true ; // Поймался новый бар elseif (New_Bar== false ) // Если бар не новый..
다섯 번째 줄에서 백분율이 설정됩니다. 로그 출력: "로트 수 90.0100000001". NormalizeDouble() 을 추가해야 할까요?
OnInit() 에서 Percent 변수에 값이 할당되기를 바랍니다.
백분율 변수는 사용자가 설정합니다. OnInit() 내가 던졌다.
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 ;
그러나 코드에서 백분율 설정은 어디에 있습니까?
명령이 로그에 표시하는 내용: Print ( "Number of lot: " ,Lots); ?
그러나 코드에서 백분율 설정은 어디에 있습니까?
명령이 로그에 표시하는 내용: Print ( "Number of lot: " ,Lots); ?
#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()을 추가해야 할까요?
많은 괜찮습니다.
주문을 여는 논리에서 오류를 찾으십시오.
이러한 경우 일반적으로 주문이 열릴 명시적인 조건을 설정합니다.
많은 괜찮습니다.
주문을 여는 논리에서 오류를 찾으십시오.
이러한 경우 일반적으로 주문이 열릴 명시적인 조건을 설정합니다.
명시적 조건이 있는 예를 제공하십시오. 내가 올바르게 이해했다면 루프를 열려면 하나의 조건이 있어야 합니다. 바르게?
로트 계산 직후, 코드 시작 부분에 주문을 열라는 명령을 내리고 테스터가 제대로 작동하는지 확인하십시오. 그런 다음 모든 것을 되돌릴 수 있습니다.
다섯 번째 줄에서 백분율이 설정됩니다. 로그 출력: "로트 수 90.0100000001". NormalizeDouble()을 추가해야 할까요?