포럼 회원들의 힌트를 반영하여 이 버전의 스크립트를 만들게 된 것에 대해 큰 감사를 드립니다:
안부, 블라디미르.
대본에서 매우 중요한 부분을 완전히 놓쳤습니다. 많은 부분을 정상화할 필요가 있었습니다. 다음은 수정된 버전입니다:
//+------------------------------------------------------------------+//| Lot_Size_Depending_On_Risk_And_SL.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputsinputuint Risk=6; // Размер риска (> 0, но не более 100 %)inputuint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double Lot_Size_Depending_On_Risk_And_SL()
{
//--- блок проверки входных параметров на корректностьif(Risk==0 || Risk>100 || Stop_Loss==0)
{
Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
return(0.0);
}
//--- блок определения размера лотаdouble trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
double lot=NormalizeDouble((AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/
(Stop_Loss*trading_account_currency),2);
//--- блок проверки размера лота на минимум и максимум от возможногоdouble min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
if(lot<min_volume)
lot=min_volume;
if(lot>max_volume)
lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделкиdouble step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(lot/step_volume);
if(MathAbs(ratio*step_volume-lot)>0.0000001)
lot=ratio*step_volume;
return(lot);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
}
//+------------------------------------------------------------------+
로봇의 포워드 테스트를 마친 후 지속적인 문제가 발생했습니다. 최상의 매개 변수 집합으로 단일 테스트를 시작할 때 전략 테스터가 실행을 시작하고 끝까지 실행하는 것처럼 보이지만 (진행률 표시기 엔진으로 판단) 중단됩니다. 메타트레이더를 다시 시작해야 하며 단일 테스트(및 일반적으로 전체 포워드 테스트)의 결과가 손실됩니다.
전문가 여러분, 모든 차트주기가 아닌 일부 차트주기에만 거래 내역을 반영하도록 플랫폼을 설정하는 방법을 알려주세요. 그리고 지금 우리가 가진 것 : "거래 내역 표시" 확인란을 클릭하면 주간 차트에서 모든 내역(위아래 화살표)이 이미 단단한 울타리로 표시됩니다. 그리고 다른 도구(추세선, 화살표 등)와 같은 설정을 원하는데, 표시가 모든 주기가 아닌 것으로 설정할 수 있기를 원합니다.
안녕하세요. 두 개의 MA의 교차점을 기반으로 한 전문가 조언자의 가장 간단한 예를 어디에서 볼 수 있는지 알려주시겠습니까 (강의를 제공 할 수 있음). 나는 하나를 추가하는 방법을 알고 있습니다. 간단한 복사-붙여넣기를 만들고 코드를 늘리고 싶지 않고 다른 방법이 있다는 것을 알고 있습니다. MQL4에서는 질문이 없었다면 MQL5에서는 어떻게해야하는지 완전히 이해할 수 없습니다.
makssub 전문가 조언자의 가장 간단한 예를 어디에서 볼 수 있는지 알려주시겠습니까 (강의를 제공 할 수 있음). 나는 하나를 추가하는 방법을 알고 있습니다. 간단한 복사-붙여넣기를 만들고 코드를 늘리고 싶지 않고 다른 방법이 있다는 것을 알고 있습니다. MQL4에서는 질문이 없었다면 MQL5에서는 어떻게해야하는지 완전히 이해할 수 없습니다.
안녕하세요. 메타에디터 5를 열어보세요. 여기에는 두 MA의 교차점을 기반으로하는 내장 (표준) 전문가 조언자가 있습니다. 코드를 열고 공부하세요. 또는 코드베이스에서 찾아보세요. 예를 들어 다음은 두 MA의 교차점을 기반으로 구축된 첫 번째 EA입니다.
전문가 조언자 작성의 한 가지 변형 만 보여 드리지만 이러한 변형은 엄청나게 많을 수 있습니다. 그것은 모두 프로그래머의 자격에 달려 있습니다. 전문가 어드바이저의 구조는 다음과 같습니다:
//+------------------------------------------------------------------+//| 1.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Input variables |//+------------------------------------------------------------------+// здесь размещаем входные параметры советника//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
// здесь инициализируем то, что считаем нужнымreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
// здесь деинициализируем то, что считаем нужным
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//--- абстрактный пример советника
Check_Trading(); // проверим условия разрешающие торговлю
Signal_Up(); // ищем сигнал для открытия длинной позиции
Open_Buy_Position(); // открываем длинную позицию
Close_Buy_Positions(); // закрываем длинную позицию
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Check_Trading()
{
// здесь вставляем условия разрешающие торговлю
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Signal_Up();
{
// здесь вставляем условия, при которых появляется сигнал на покупку
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Open_Buy_Position();
{
// здесь вставляем функцию открытия длинной позиции
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Close_Buy_Positions();
{
// здесь вставляем функцию закрытия длинной позиции
}
//+------------------------------------------------------------------+
다음과 같은 구조입니다. 다시 한 번 강조하지만 이것은 전문가 자문 작성 가이드가 아니라 제가 전문가 고문을 작성할 때 준수하는 대략적인 구조입니다.
//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
// здесь инициализируем то, что считаем нужнымreturn(INIT_SUCCEEDED);
6201 바 정보를 표시합니다.
거기에 뭐라고 쓰여 있나요?
대부분의 경우 이야기는 테스터를위한 것이므로 지표가 올바르게 계산됩니다.포럼 회원들의 힌트를 반영하여 이 버전의 스크립트를 만들게 된 것에 대해 큰 감사를 드립니다:
안부, 블라디미르.
대본에서 매우 중요한 부분을 완전히 놓쳤습니다. 많은 부분을 정상화할 필요가 있었습니다. 다음은 수정된 버전입니다:
안부, 블라디미르.
그리고 지금 우리가 가진 것 : "거래 내역 표시" 확인란을 클릭하면 주간 차트에서 모든 내역(위아래 화살표)이 이미 단단한 울타리로 표시됩니다.
그리고 다른 도구(추세선, 화살표 등)와 같은 설정을 원하는데, 표시가 모든 주기가 아닌 것으로 설정할 수 있기를 원합니다.
안녕하세요. 두 개의 MA의 교차점을 기반으로 한 전문가 조언자의 가장 간단한 예를 어디에서 볼 수 있는지 알려주시겠습니까 (강의를 제공 할 수 있음).
나는 하나를 추가하는 방법을 알고 있습니다. 간단한 복사-붙여넣기를 만들고 코드를 늘리고 싶지 않고 다른 방법이 있다는 것을 알고 있습니다.
MQL4에서는 질문이 없었다면 MQL5에서는 어떻게해야하는지 완전히 이해할 수 없습니다.
나는 하나를 추가하는 방법을 알고 있습니다. 간단한 복사-붙여넣기를 만들고 코드를 늘리고 싶지 않고 다른 방법이 있다는 것을 알고 있습니다.
MQL4에서는 질문이 없었다면 MQL5에서는 어떻게해야하는지 완전히 이해할 수 없습니다.
안녕하세요. 메타에디터 5를 열어보세요. 여기에는 두 MA의 교차점을 기반으로하는 내장 (표준) 전문가 조언자가 있습니다. 코드를 열고 공부하세요. 또는 코드베이스에서 찾아보세요. 예를 들어 다음은 두 MA의 교차점을 기반으로 구축된 첫 번째 EA입니다.
감사합니다, 블라디미르.
안녕하세요. 메타에디터 5를 엽니다. 두 MA의 교차점을 기반으로 하는 (표준) 전문가 조언자가 내장되어 있습니다. 코드를 열고 연구하세요. 또는 코드베이스에서 검색하세요. 예를 들어 다음은 두 MA의 교집합을 기반으로 구축된 첫 번째 EA입니다.
안부, 블라디미르.
고마워요, 살펴봤습니다.
OnInit에서 무슨 일이 일어나는지 이해합니다.
온틱에 모든 것을 올바르게 조이는 방법은 무엇인가요?
고마워요, 찾아봤습니다.
OnInit에서 무슨 일이 일어나고 있는지 대략적으로 이해했습니다.
이 모든 것을 온틱에 어떻게 연결하나요?
전문가 조언자 작성의 한 가지 변형 만 보여 드리지만 이러한 변형은 엄청나게 많을 수 있습니다. 그것은 모두 프로그래머의 자격에 달려 있습니다. 전문가 어드바이저의 구조는 다음과 같습니다:
다음과 같은 구조입니다. 다시 한 번 강조하지만 이것은 전문가 자문 작성 가이드가 아니라 제가 전문가 고문을 작성할 때 준수하는 대략적인 구조입니다.
감사합니다, 블라디미르.
어떻게 작성해야 할지 모르겠어요.
어떻게 작성해야 할지 모르겠어요.
정확히 무엇이 명확하지 않으신가요? EA 초기화 함수를 만드는 방법은 무엇인가요? 그런 다음 초보자를 위해이 기사를 공부하십시오.
감사합니다, 블라디미르.