MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 934

 
Aleksei Beliakov :

마지막 줄에 슬래시가 없는 이유는 무엇이며 매크로에서 값을 반환할 수 있습니까?

이것은 매크로 대체 구문, 문자열 스플라이싱입니다.

다음은 값을 반환하는 예입니다. https://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
아무도 나를 도울 수 있습니까?
 
jaffer wilson :
아무도 나를 도울 수 있습니까?
가사 대신 - 묻습니다. 누가 방송에 나올 것인가 - 포럼 주제의 장점을 고려하고 도울 것입니다.
 
만약 (MA5>MA20)
{
신호=1;
}

if(Signal>TradeLevel) // TradeLevel은 0으로 설정됩니다.
{
ticket=OrderSend( Symbol() ,OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
}



이 논리가 작동하지 않는 이유를 말씀해 주시겠습니까? (mql4)
거래가 열리지 않습니다

(다른 모든 것, 변수, 모든 것이 설명됨 - MT의 표준 올빼미 템플릿, 컴파일 오류 없음)
 
Ivan Butko :

   if (MA5>MA20)
     {
      Signal= 1 ;
     }
   if (Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket= OrderSend ( Symbol (),OP_BUY,Lot,Ask, 3 ,Ask-SL* Point ,Bid+TP* Point , "Optim" , 16384 , 0 ,Blue);
     } 


이 논리가 작동하지 않는 이유를 말씀해 주시겠습니까? (mql4)
거래가 열리지 않습니다

(다른 모든 것, 변수, 모든 것이 설명됨 - MT의 표준 올빼미 템플릿, 컴파일 오류 없음)

그래서 논리가 작동하지 않거나 고문의 위치가 열리지 않습니까?

그런 좋은 습관이 있습니다. 잡지 "전문가"를 먼저 살펴보십시오. 많은 것들이 거기에 기록되어 있습니다. 글쎄, "저널"만 보는 것도 나쁘지 않습니다.

참고로 저는 거래 요청을 보낼 때 두 가지 오류가 확실하고 한 가지 불확실성이 있습니다.

 
Artyom Trishkin :

그래서 논리가 작동하지 않거나 고문의 위치가 열리지 않습니까?

그런 좋은 습관이 있습니다. 잡지 "전문가"를 먼저 살펴보십시오. 많은 것들이 거기에 기록되어 있습니다. 글쎄, 그냥 "저널"도보기에 아프지 않습니다.

참고로 저는 거래 요청을 보낼 때 두 가지 오류가 확실하고 한 가지 불확실성이 있습니다.

감사합니다. 모든 것이 작동했습니다!

방금 이 논리를 표준 MACD Expert Advisor로 옮겼습니다.
다른 신호를 배포하고 요약할 기반이 필요했습니다.

방해해서 죄송합니다. (그런데 잡지는 비어 있었고 오류도 없었고 거래를 열지 않았고 그게 다야).

실례가 되지 않는다면 잘못된 점을 지적해주세요.

 

그런 원시 코드가 있습니다

templ(T) class CData{
public :CData(){};~CData(){};
       T Total(T &mas[]  , int y){ return ( ArraySize (mas));}    
       T Total(T &mas[][], int y){ return ( ArraySize (mas));}}

문제는 Total() 함수를 호출하는 방법입니다. 예를 들어 OnInit()에서 호출하고 싶습니다. 무례하지 마십시오. 도움말 부츠를 이해하지 못했습니까? 이 클래스의 메모리를 삭제해야 합니까? 그렇다면 어디에서 어떻게 표시해야 합니까?

 

거래당 위험 계산의 BUCK

작업: 모든 상품(forex, 멜랄, CFD 포함)에 대해 거래당 허용 가능한 위험 수준이 $250인 로트 크기를 계산합니다.

내 구현(BUY의 경우 기능 코드 스니펫):

 //valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt= NormalizeDouble (iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

문제: 이 코드는 통화 쌍(십자형 포함), 금, 석유, 그러나 인덱스, nq100을 포함한 모든 자산의 손실을 올바르게 계산합니다. 예를 들어, 올바르게 계산 하지 마십시오. 즉, 내 스크립트의 데이터(트랜잭션의 잠재적 손실에 대해 이야기하고 있음)는 MT4 전략 테스터 가 고려하는 것보다 10배 적게 안정적으로 획득됩니다!

몇 가지 참고 사항:

1. 테스트는 알파리 터미널에서 진행되었습니다.

2. 터미널에 따르면 XAUUSD, BRN(석유) 및 NQ100 - "CFD"에 대한 수익 계산 방법, 각각 "forex" 통화 쌍

3. 여기서 문제는 내가 고려하지 않은 계약의 규모라고 생각합니다(석유 - 1000, XAUUSD - 100, NQ100 - 10). 그런데 왜 XAUUSD, BRN은 올바르게(그리고 통화 쌍도) 고려되지만 NQ100은 그렇지 않습니까? 아마도 Alpari 터미널의 기호 속성에 "CFD"이익을 계산하는 방법이 있지만 실제로 "Forex"에서 계산된다는 사실에도 불구하고? 이것도 가능한가요??

일반적으로 누군가 내 스크립트의 오류와 수정 방법을 대중적인 방식으로 설명해 주시면 감사하겠습니다.

감사하다!

 
Сергей Михеев :

거래당 위험 계산의 BUCK

방법 _TICKSIZE

 
유리 코제브니 코프 2019.08.10 17:57 KO
Сергей Михеев :

거래당 위험 계산의 BUCK

방법 _TICKSIZE

xxxxxx를 읽으십시오

불행히도 이것은 문제를 해결하지 못합니다. 나는 가지고있다

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

나는 또한 이 코드를 시도했다:

 double StoimPunkt( string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT)); return (S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt= NormalizeDouble (iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

결과는 위의 예에서와 정확히 동일합니다.

다른 아이디어가 있습니까?