2. 또 다른 문제는 다음과 같습니다. SYMBOL_CALC_MODE_FOREX 경우를 다시 고려하십시오. 작업= SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN) + 통화() ; 입찰=SymbolInfoDouble(작업, SYMBOL_BID );
기호 변수에 기본 통화로 직접적인 인용이 없는 통화가 있는 경우(예: CADJPY ) SymbolInfoDouble(work,SYMBOL_BID)은 값 0을 반환합니다.
2.1. 또한 두 번째 변수(bid)를 계산할 때 BID 가격을 사용하는 이유도 불명확하다. 결국, 우리 는 예치 통화를 희생하여 담보가 계산되는 통화의 취득을 보장해야 합니다. "마진 통화를 사고 예금 통화를 판매하십시오". 그리고 예치 통화가 특정 통화 쌍에서 두 번째 위치에 있으면 ASK 가격을 사용하여 지정된 작업을 수행해야 합니다.
상황을 수정하기 위해 다음을 수행했습니다.
더블 코스; //--- 스위치(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE)) { 케이스 SYMBOL_CALC_MODE_FOREX: 코스=1.0;
//---예금 통화가 현재 통화의 기준 통화인지 확인 //한 쌍. 그렇다면 코스 변수의 값은 1.0으로 유지됩니다. if(SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)!=통화()) { 작업=SymbolInfoString(기호,SYMBOL_CURRENCY_MARGIN)+통화();
//---기준 통화가 다음과 같은 통화 쌍이 있는지 확인 //현재 쌍의 기본 통화이며 견적 통화는 예금 통화와 동일합니다. //(예: 보증금이 USD인 경우 직접 견적을 확인합니다.) if(SymbolInfoDouble(작업,SYMBOL_ASK)!=0) 코스=SymbolInfoDouble(작업,SYMBOL_ASK);
//---위의 조건이 충족되지 않으면 문자의 순서를 변경합니다. //변수의 통화는 작동하고 통화 쌍을 가져옵니다. //예금 통화와 일치하고 견적 통화가 기준 통화와 일치합니다. //현재 쌍(예금이 USD인 경우 역 견적이 있는 통화 쌍을 얻음). 또 다른 { 작업=통화()+SymbolInfoString(기호,SYMBOL_CURRENCY_MARGIN); 코스=1/SymbolInfoDouble(작업,SYMBOL_BID); } } margin=코스*볼륨*contract_size/leverage; margin=free_margin-margin; 부서지다;
이해하고 수정했습니다. 고맙습니다.
수정 감사합니다 거의 좋은데 왜 거의...
도움말 말한다
start_time [in] 첫 번째 요소에 해당하는 막대 시간.
그리고 첫 번째 요소는 0입니다.
그리고 다음은 마지막 요소가 있는 순서입니다.
그렇다면 도움말을 수정하십시오.
수정 감사합니다 거의 좋은데 왜 거의...
도움말 말한다
start_time [in] 첫 번째 요소에 해당하는 막대 시간.
그리고 첫 번째 요소는 0입니다.
그리고 다음은 마지막 요소가 있는 순서입니다.
그렇다면 도움말을 수정하십시오.
날짜부터 날짜까지 변형의 start_time 및 stop_time은 무엇이든 될 수 있는 상황입니다. 어떤 경우에도 범위를 형성합니다. 이것을 문서에서 더 정확하게 보여주도록 합시다.
저것들. Copy* 함수가 date-to-date 케이스의 시작 요소를 제외한 모든 요소를 반환한다는 말씀이신가요? 따라서 다음과 같은 표현을 작성해야 합니다.
저에게 이 질문은 매우 중요합니다.
나는 새로운 날로 전환하는 동안 다음과 같은 일이 발생한다는 사실에 주의를 기울입니다.
업데이트 후 모든 것이 정상으로 돌아갑니다.
새로운 날로의 전환 형성을 지켜보면 이러한 변화를 자주 목격하는데, 가장 흥미로운 점은 다음 날 첫 번째 막대가 형성되는 시점에 차트 업데이트가 아무런 결과를 가져오지 않는다는 것입니다. (제가 틀렸을 수도 있지만 제 이전 게시물도 이와 관련이 있다고 생각합니다.)
빌드 252.
메인 메뉴: <CHARTS> - < GRAPHIC TOOLS > 타임프레임이 나옵니다.
불행히도 최신 버전의 CAAccountInfo는 빌드에 포함되지 않았습니다.
첨부 파일에서 FreeMarginCheck 메서드를 찾을 수 있습니다(지금까지는 SYMBOL_CALC_MODE_FOREX에만 해당).
의견 및(또는) 생각이 있으면 작성해 주십시오.
FreeMarginCheck 메소드에 약간의 작업이 필요하다는 것을 발견했습니다.
1. SYMBOL_CALC_MODE_FOREX의 경우를 고려하십시오.
작업=SymbolInfoString(기호,SYMBOL_CURRENCY_MARGIN)+통화();
입찰=SymbolInfoDouble(작업, SYMBOL_BID );
margin=bid*volume*contract_size/leverage;
margin=free_margin-margin;
부서지다;
두 항 SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN) 및 Currency()의 값이 같으면 입찰 변수는 0으로 설정되고 마진 변수는 free_margin으로 설정됩니다.
상황을 수정하기 위해 다음을 수행했습니다.
케이스 SYMBOL_CALC_MODE_FOREX:
입찰가=1.0;
if (SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)!=통화())
{
작업=SymbolInfoString(기호,SYMBOL_CURRENCY_MARGIN)+통화();
입찰=SymbolInfoDouble(작업,SYMBOL_BID);
}
margin=bid*volume*contract_size/leverage;
margin=free_margin-margin;
부서지다;
Copy * () 기능이 정상적으로 작동하는 시점을 알 수 있습니까?
각각의 새 빌드에서 작동이 중지되고 실제로 아무도 사용하지 않습니까?
수정 감사합니다 거의 좋은데 왜 거의...
도움말 말한다
start_time [in] 첫 번째 요소에 해당하는 막대 시간.
그리고 첫 번째 요소는 0입니다.
그리고 다음은 마지막 요소가 있는 순서입니다.
그렇다면 도움말을 수정하십시오.
귀하의 예에서 time1 값을 얻는 방법이 명확하지 않습니다. 상황을 재현하려는 시도가 실패했습니다.
FreeMarginCheck 메소드에 약간의 작업이 필요하다는 것을 발견했습니다.
FreeMarginCheck 메소드에 약간의 작업이 필요하다는 것을 발견했습니다.
2. 또 다른 문제는 다음과 같습니다. SYMBOL_CALC_MODE_FOREX 경우를 다시 고려하십시오.
작업= SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN) + 통화() ;
입찰=SymbolInfoDouble(작업, SYMBOL_BID );
기호 변수에 기본 통화로 직접적인 인용이 없는 통화가 있는 경우(예: CADJPY ) SymbolInfoDouble(work,SYMBOL_BID)은 값 0을 반환합니다.
2.1. 또한 두 번째 변수(bid)를 계산할 때 BID 가격을 사용하는 이유도 불명확하다. 결국, 우리 는 예치 통화를 희생하여 담보가 계산되는 통화의 취득을 보장해야 합니다. "마진 통화를 사고 예금 통화를 판매하십시오". 그리고 예치 통화가 특정 통화 쌍에서 두 번째 위치에 있으면 ASK 가격을 사용하여 지정된 작업을 수행해야 합니다.
상황을 수정하기 위해 다음을 수행했습니다.
더블 코스;
//---
스위치(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE))
{
케이스 SYMBOL_CALC_MODE_FOREX:
코스=1.0;
//---예금 통화가 현재 통화의 기준 통화인지 확인
//한 쌍. 그렇다면 코스 변수의 값은 1.0으로 유지됩니다.
if(SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN)!=통화())
{
작업=SymbolInfoString(기호,SYMBOL_CURRENCY_MARGIN)+통화();
//---기준 통화가 다음과 같은 통화 쌍이 있는지 확인
//현재 쌍의 기본 통화이며 견적 통화는 예금 통화와 동일합니다.
//(예: 보증금이 USD인 경우 직접 견적을 확인합니다.)
if(SymbolInfoDouble(작업,SYMBOL_ASK)!=0)
코스=SymbolInfoDouble(작업,SYMBOL_ASK);
//---위의 조건이 충족되지 않으면 문자의 순서를 변경합니다.
//변수의 통화는 작동하고 통화 쌍을 가져옵니다.
//예금 통화와 일치하고 견적 통화가 기준 통화와 일치합니다.
//현재 쌍(예금이 USD인 경우 역 견적이 있는 통화 쌍을 얻음).
또 다른
{
작업=통화()+SymbolInfoString(기호,SYMBOL_CURRENCY_MARGIN);
코스=1/SymbolInfoDouble(작업,SYMBOL_BID);
}
}
margin=코스*볼륨*contract_size/leverage;
margin=free_margin-margin;
부서지다;