안녕하세요! 2020.10.03_13:33 GMT+3. 저는 MetaTrader 4의 표준 이동 평균 전문가 고문을 선택했습니다. 그리고 수익을 낼 수 있도록 변경하기 시작했습니다. 전략 테스터 에서 OrderProfit() 함수를 사용하여 거래를 성사하기 위한 조건을 설명하려고 할 때 EA는 이 조건에서 거래 성사를 중단했습니다. 그는 거래를 성사시키지 못합니다. 그런데 거래 성사 조건을 제대로 썼는지 의심스럽다. 그렇지 않으면 고문이 거래를 마감할 것입니다. 아마 거래 개시 가격과 최근 가격을 쓰려고 노력할 것입니다. 거래 개시 가격과 최종 가격 간의 최대 차이에 도달하고 이 차이가 감소한 후 거래를 종료합니다. 어드바이저 파일을 첨부합니다. 13:50 GMT+3.
Николай Никитюк : 안녕하세요! 2020.10.03_13:33 GMT+3. 저는 MetaTrader 4의 표준 이동 평균 전문가 고문을 선택했습니다. 그리고 수익을 낼 수 있도록 변경하기 시작했습니다. 전략 테스터 에서 OrderProfit() 함수를 사용하여 거래를 성사하기 위한 조건을 설명하려고 할 때 EA는 이 조건에서 거래 성사를 중단했습니다. 그는 거래를 성사시키지 못합니다. 그런데 거래 성사 조건을 제대로 썼는지 의심스럽다. 그렇지 않으면 고문이 거래를 마감할 것입니다. 아마 거래 개시 가격과 최근 가격을 쓰려고 노력할 것입니다. 거래 개시 가격과 최종 가격 간의 최대 차이에 도달하고 이 차이가 감소한 후 거래를 종료합니다. 어드바이저 파일을 첨부합니다. 13:50 GMT+3.
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderMagicNumber()!=MAGICMA || OrderSymbol()!= Symbol ()) continue ;
//--- check order type// if (OrderType()==OP_BUY)
{
/*
if(OrderProfit()>0.0)
{ProfitMax=OrderProfit(); break;} // Здесь у вас прерывается цикл, если сделка в плюсе
if(OrderProfit()>ProfitMax)
{ProfitMax=OrderProfit(); break;}
if((ProfitMax-DiffProfit)<0.0) break;
if((ProfitMax-DiffProfit)>OrderProfit())
*/if (DiffProfit<OrderProfit()) // Исходя из ваших условий, то вот
{
if (!OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
elsebreak ;
break ;
}
if (OrderType()==OP_SELL)
{
/*
if(OrderProfit()>0.0)
{ProfitMax=OrderProfit(); break;} // Здесь у вас прерывается цикл, если сделка в плюсе
if(OrderProfit()>ProfitMax)
{ProfitMax=OrderProfit(); break;}
if((ProfitMax-DiffProfit)<0.0) break;
if((ProfitMax-DiffProfit)>OrderProfit())
*/if (DiffProfit<OrderProfit()) // Исходя из ваших условий, то вот
{
if (!OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
elsebreak ;
break ;
}
}
//+------------------------------------------------------------------+
입력 데이터를 정규화하는 함수를 작성하기로 했습니다. 그러나 원래 값을 정규화된 값으로 "대체"할 수 없습니다. 저것들. Open 시계열 버퍼의 값을 Temp 배열의 새 값으로 업데이트할 수 없습니다. 내 실수가 뭐야? OOP와 non-OOP를 교차시키려는 느낌이 있음))
Open= new CiOpen();
if ( CheckPointer (Open)== POINTER_INVALID || !Open.Create(Symb.Name(), PERIOD_CURRENT ))
return ;
//---int bars= 10 ;
double Temp[]; //Создаем массив для временного хранения входных данныхArraySetAsSeries (Temp, true ); //Устанавливает флаг AS_SERIES
Open.GetData( 0 ,bars,Temp); //Копируем необходимые данные в массив Temp
InputNormalize(Temp,bars); //Нормализуем данные в массиве
//---Как заменить значения в Open значениями из Temp?---
}
//+------------------------------------------------------------------+//| функция нормализации входных данных |//+------------------------------------------------------------------+void InputNormalize( double &buffer[], int bars)
{
double d1=- 1 ;
double d2= 1 ;
double x_min=buffer[ ArrayMinimum (buffer, 0 ,bars)];
double x_max=buffer[ ArrayMaximum (buffer, 0 ,bars)];
for ( int i= 0 ; i<bars; i++)
{
buffer[i]=(((buffer[i]-x_min)*(d2-d1))/(x_max-x_min))+d1;
}
return ;
}
입력 데이터를 정규화하는 함수를 작성하기로 했습니다. 그러나 원래 값을 정규화된 값으로 "대체"할 수 없습니다. 저것들. Open 시계열 버퍼의 값을 Temp 배열의 새 값으로 업데이트할 수 없습니다. 내 실수가 뭐야? OOP와 non-OOP를 교차시키려는 느낌이 있음))
더 쉽게 만들 수 있다고 확신합니다! 이 경우 가르쳐주세요)
언어 문서 읽기
미리 정의된 변수의 값은 실행을 위해 mql4 프로그램을 시작하기 전에 클라이언트 터미널에 의해 설정됩니다. 사전 정의된 변수는 상수이며 mql4 프로그램에서 변경할 수 없습니다.
Для каждой выполняющейся mql4-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql4-программы на выполнение...
안녕하세요!
세 소나무에 얽힌:
나는 숫자를 extern int =2로 설정했다. 외부 정수 b = 3; 외부 정수 c = 4; 주어진 d와 비교하기 위해 a, b 또는 c가 변경될 때 값을 변경하도록 숫자 b c를 설정하는 방법은 무엇입니까(예: d=344) ?
고맙습니다!
안녕하세요!
세 소나무에 얽힌:
나는 숫자를 extern int =2로 설정했다. 외부 정수 b = 3; 외부 정수 c = 4; 주어진 d와 비교하기 위해 a, b 또는 c가 변경될 때 값을 변경하도록 숫자 b c를 설정하는 방법은 무엇입니까(예: d=344) ?
고맙습니다!
x = c + b*10 + a*100
x = c + b*10 + a*100
고스파디! 그리고 난 내 머리를 부수고 있어! 고맙습니다!
안녕하세요! 2020.10.03_13:33 GMT+3. 저는 MetaTrader 4의 표준 이동 평균 전문가 고문을 선택했습니다. 그리고 수익을 낼 수 있도록 변경하기 시작했습니다. 전략 테스터 에서 OrderProfit() 함수를 사용하여 거래를 성사하기 위한 조건을 설명하려고 할 때 EA는 이 조건에서 거래 성사를 중단했습니다. 그는 거래를 성사시키지 못합니다. 그런데 거래 성사 조건을 제대로 썼는지 의심스럽다. 그렇지 않으면 고문이 거래를 마감할 것입니다. 아마 거래 개시 가격과 최근 가격을 쓰려고 노력할 것입니다. 거래 개시 가격과 최종 가격 간의 최대 차이에 도달하고 이 차이가 감소한 후 거래를 종료합니다. 어드바이저 파일을 첨부합니다. 13:50 GMT+3.
안녕하세요!
입력 데이터를 정규화하는 함수를 작성하기로 했습니다. 그러나 원래 값을 정규화된 값으로 "대체"할 수 없습니다. 저것들. Open 시계열 버퍼의 값을 Temp 배열의 새 값으로 업데이트할 수 없습니다. 내 실수가 뭐야? OOP와 non-OOP를 교차시키려는 느낌이 있음))
더 쉽게 만들 수 있다고 확신합니다! 이 경우 가르쳐주세요)
안녕하세요!
입력 데이터를 정규화하는 함수를 작성하기로 했습니다. 그러나 원래 값을 정규화된 값으로 "대체"할 수 없습니다. 저것들. Open 시계열 버퍼의 값을 Temp 배열의 새 값으로 업데이트할 수 없습니다. 내 실수가 뭐야? OOP와 non-OOP를 교차시키려는 느낌이 있음))
더 쉽게 만들 수 있다고 확신합니다! 이 경우 가르쳐주세요)
언어 문서 읽기
언어 문서 읽기
알렉시, 감사합니다! 이제 이것이 불가능하다는 것이 분명합니다.
사실, 정확히 mql4가 없습니다. CiOpen 클래스 를 통해 데이터를 교체하려고 합니다. 배열의 지정된 위치에서 요소를 변경해야 하는 Update 메서드의 존재로 인해 혼란스러웠습니다.
알렉세이, 고마워! 이제 이것이 불가능하다는 것이 분명합니다.
사실, 정확히 mql4가 없습니다. CiOpen 클래스 를 통해 데이터를 교체하려고 합니다. 배열의 지정된 위치에서 요소를 변경해야 하는 Update 메서드의 존재로 인해 혼란스러웠습니다.
mql4 섹션에서 질문을 받았기 때문에 mql4에 대해 답변했습니다. 귀하의 질문에 mql5에 대한 힌트가 없습니다. 그러나 결과는 동일합니다.