"AccountInfo... 정보 관련성" 주제를 만들 때 "소프트웨어 환경에 캐시된" 데이터를 사용하는 함수가 있다는 것을 알게 되었습니다.정보 관련성"이라는 주제를 만들 때 "소프트웨어 환경에 캐시된" 데이터를 사용하는 함수와 항상 "실제 데이터에 직접 액세스"하는 함수가 있다는 것을 배웠습니다.
You have just registered and most likely you have questions such as, "How do I insert a picture to my a message?" "How do I format my MQL5 source code?" "Where are my personal messages kept?" You may have many other questions. In this article, we have prepared some hands-on tips that will help you get accustomed in MQL5.community and take full advantage of its available features.
double NewOrderAllowedVolume(string symbol)
{
double allowed_volume=0;
//--- 주문의 최대 거래량 제한을 가져옵니다.double symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- 기호로 볼륨 제한을 가져옵니다.double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);
//--- 기호로 오픈 포지션의 볼륨을 가져옵니다.double opened_volume=PositionVolume(symbol);
if(opened_volume>=0)
{
이미 사용 가능한 볼륨을 사용한 경우 //---if(max_volume-opened_volume<=0)
return(0);
//--- 오픈 포지션의 볼륨이 최대 볼륨을 초과하지 않습니다.//두 배 주문_볼륨_온_심볼=PendingsVolume(심볼);//허용된 볼륨=최대 볼륨-열린 볼륨-주문 볼륨-온 심볼;
allowed_volume=max_volume-opened_volume;
if(allowed_volume>symbol_max_volume) allowed_volume=symbol_max_volume;
}
return(allowed_volume);
}
Predefined Macro Substitutions - Named Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
감사합니다.
'SYMBOL_VOLUME_LIMIT' - 선언되지 않은 식별자.............
'SymbolInfoDouble' - 함수 호출에 과부하를 적용할 수 없음.............
저만 그런가요?
'SYMBOL_VOLUME_LIMIT' - 선언되지 않은 식별자.............
'SymbolInfoDouble' - 함수 호출에 과부하를 적용할 수 없음.............
저만 그런가요?
할 수 있나요?
SeriesInfoInteger() 함수에 대한 질문이 하나 더 있습니다.
"AccountInfo... 정보 관련성" 주제를 만들 때 "소프트웨어 환경에 캐시된" 데이터를 사용하는 함수가 있다는 것을 알게 되었습니다.정보 관련성"이라는 주제를 만들 때 "소프트웨어 환경에 캐시된" 데이터를 사용하는 함수와 항상 "실제 데이터에 직접 액세스"하는 함수가 있다는 것을 배웠습니다.
SeriesInfoInteger() 함수는 어느 함수의 범주에 속하나요?
체크볼륨값 함수에는 다음 코드가 사용됩니다:
int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
volume_step,ratio*volume_step);
return(false);
}
그러나 이것이 더 정확합니다:
int ratio = (int)MathRound((volume-min_volume)/volume_step);
if (MathAbs(ratio*volume_step+min_volume-volume)>0.0000001)
{
description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
volume_step,ratio*volume_step+min_volume);
return(false);
}
볼륨 변화의 최소 단계는 최소값부터 계산해야 하기 때문입니다.
그리고 코드 스니펫
//--- вычислим значение маржи
bool check=OrderCalcMargin(type,Symbol(),lots,last_tick.ask,margin);
으로 대체해야 할 수도 있습니다:
//--- вычислим значение маржи
double price = (type == ORDER_TYPE_BUY || type == ORDER_TYPE_BUY_LIMIT || type == ORDER_TYPE_BUY_STOP || type == ORDER_TYPE_BUY_STOP_LIMIT) ? last_tick.ask : last_tick.bid;
bool check=OrderCalcMargin(type,Symbol(),lots,price,margin);
MQL5의 변경으로 인해 이제 하나의 심볼에 허용되는 최대 전체 볼륨은 다음과 같이 얻을 수 있습니다:
이전 변형을 사용하지 마세요! 다음과 같았습니다:
문서가 수정되었으며 새로운 Check_Order_And_Volume_Limits.mq5 전문가 코드가 첨부되었습니다.관리자님께
이 함수를 사용하려고 하는데 모든 경우에 0을 반환합니다.
내 MT5 빌드는 2280입니다.
double orders_volume_on_symbol=PendingsVolume(symbol);
는 오류가 발생하고 해당 함수가 없습니다.
그리고 보류중인 주문을 포함하지 않도록 함수를 수정하면 0을 반환합니다.
최대 볼륨이 0이고 열린 볼륨이 0이기 때문입니다;
개설된 포지션이 없는데 최대 볼륨이 0인 이유는 무엇인가요?
빌드 2715