Торговые отчеты MetaTrader 5 довольно тяжелы для восприятия. По этой причине с определенного момента разработчики добавили в Терминал более понятный режим просмотра закрытых позиций. Однако, это не
코드를 작성할 시간이 없습니다. 포럼 회원들의 힌트를 고려하여 큰 감사를 드리며이 버전의 스크립트를 얻었습니다:
//+------------------------------------------------------------------+//| 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=(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/(Stop_Loss*trading_account_currency);
//--- блок проверки размера лота на минимум и максимум от возможного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));
}
//+------------------------------------------------------------------+
분할기를 0으로 확인하지 않고 많은 분할을 수행합니다. 폭발적입니다.
팁 주셔서 감사합니다, Artyom! 수표는 꼭 추가하겠습니다.
안부 전해주세요, 블라디미르.
폭발적.
그렇군요.
fxsaber를 읽고 계신다면 답장해 주세요.
PositionID는 tst 파일에 저장됩니다. tst->Virtual로 변환하는 것이 합리적 일 수 있으며, 그러면 MT4 스타일로 tst로 작업 할 수 있습니다. 다음은 이러한 변환의 예입니다.
객체에서 백테스트 기록을 추출할 수도 있습니다. 라이브러리를 사용하면 더 쉽게 이해할 수 있습니다.
ZЫ 저는 이 스레드를 구독하지 않아서 보이지 않을 수 있습니다.
틱당 비용을 고려해야 합니다.
모두들 좋은 아침, 좋은 기분입니다!
코드를 작성할 시간이 없습니다. 포럼 회원들의 힌트를 고려하여 큰 감사를 드리며이 버전의 스크립트를 얻었습니다:
안부, 블라디미르.
안녕하세요!
로봇이 한 대의 컴퓨터에서만 작동할 수 있도록 로봇을 개선하는 방법을 제안해 주시겠습니까?
(복사를 방지하기 위해)
안부, 알렉산더
안녕하세요!
로봇이 한 대의 컴퓨터에서만 작동할 수 있도록 로봇을 개선하는 방법을 알려주시겠어요?
(복사를 방지하기 위해)
안부, 알렉산더
가장 간단한 변형입니다.
OnInit 함수에 두 줄의 코드를 삽입하세요.
계정 번호 대신 전문가 어드바이저에게 제공할 사람의 계정을 지정하고 ex5 파일만 컴파일하여 제공하세요.
가장 쉬운 옵션입니다.
OnInit 함수에 두 줄의 코드를 삽입합니다.
계좌 번호 대신 전문가 어드바이저를 제공할 사람의 계좌를 지정하고 ex5 파일만 컴파일하여 제공하세요.
감사합니다!
가장 쉬운 옵션입니다.
OnInit 함수에 두 줄의 코드를 삽입합니다.
계좌 번호 대신 전문가 어드바이저를 제공할 사람의 계좌를 지정하고 ex5 파일만 컴파일하여 제공하세요.
클라이언트가 단말기를 켜면 Expert Advisor가 크래시됩니다 :-))
ACCOUNT_LOGIN=0인 경우가 있기 때문입니다.
클라이언트가 단말기를 켜면 Expert Advisor가 충돌합니다 :-)
ACCOUNT_LOGIN=0인 상황이 있기 때문입니다.
안정적이고 높은 품질이 필요한 경우 프리랜서용입니다.
이상합니다. 터미널의 "설정-> 차트"에서 최대 5000 막대를 설정했습니다. 터미널을 다시로드했는데 기호가있는 탭 위로 마우스를 가져 가면 5000 개의 막대가 표시됩니다.
그러나이 코드:
는 6201개의 막대에 대한 정보를 표시합니다.
이것이 맞나요? 요금_총계에서도 5000이 될 것으로 예상했습니다.