오류가 어디에 있는지 알려주십시오. 찾을 수 없습니다. 이미 주문 수정 코드를 다시 작성했는데 오류가 남아 있습니다. 나는 그 오류가 로그에서 나온 것이 아님을 강조합니다. 로그에는 하나의 오류가 없습니다. 테스트 중 결과에서 오류를 발견했습니다. 예시: 1.4654의 가격으로 매수 포지션 (주문 번호 1)을 열었습니다. 결과에 추가로 수정(주문 번호 1) 가격 1.4654 및 TakeProfit 1.4752라고 나와 있습니다. 결과에서 추가로 닫기(주문 번호 1) 가격 1.4704 및 TakeProfit 1.4752로 표시됩니다. 이익 = 50.00
StopLoss를 설정하지 않았기 때문에 TakeProfit에 의해서만 닫혀야 하지만 손실 위치의 예입니다. 1.4820의 가격에 매수 포지션(주문 번호 271)을 열었습니다. 결과에 추가로 수정(주문 번호 271) 가격 1.4820 및 TakeProfit 1.4918이라고 나와 있습니다. 결과에서 추가로 닫기(주문 번호 1) 가격 1.4737 및 TakeProfit 1.4918로 표시됩니다. 이익 = - 83.46
내가 100을 넣는 모든 곳에서 TakeProfit
손절매가 설정되지 않았습니다.
수정하는 방법을 모르겠습니다.
이 EA의 코드를 컴파일할 때 = 0 오류 및 0 경고.
내가 사용한 주문 수정 코드는 다음과 같습니다.
//| Описание : Модификация ордера. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| pp - цена открытия позиции, установки ордера |//| sl - ценовой уровень стопа |//| tp - ценовой уровень тейка |//| ex - дата истечения |//+----------------------------------------------------------------------------+void ModifyOrder( double pp=- 1 , double sl= 0 , double tp= 0 , datetime ex= 0 ){
int dg= MarketInfo ( OrderSymbol (), MODE_DIGITS), er;
double op= NormalizeDouble ( OrderOpenPrice () , dg);
double os= NormalizeDouble ( OrderStopLoss () , dg);
double ot= NormalizeDouble ( OrderTakeProfit (), dg);
color cl;
if (pp<= 0 ) pp= OrderOpenPrice ();
if (sl< 0 ) sl= OrderStopLoss ();
if (tp< 0 ) tp= OrderTakeProfit ();
pp= NormalizeDouble (pp, dg);
sl= NormalizeDouble (sl, dg);
tp= NormalizeDouble (tp, dg);
if (pp!=op || sl!=os || tp!=ot) {
if ( MathMod ( OrderType (), 2 )== 0 ) cl=clModifyBuy;
if (! OrderModify ( OrderTicket (), pp, sl, tp, ex, cl)) {
er= GetLastError ();
Print ( "Error(" ,er, ") modifying order: " ,Error(error_code));
Print ( "Ask=" ,Ask, " Bid=" ,Bid, " sy=" , OrderSymbol (),
" op=" +GetNameOP( OrderType ()), " pp=" ,pp, " sl=" ,sl, " tp=" ,tp);
}
}
}
alex12 : 오류가 어디에 있는지 알려주십시오. 찾을 수 없습니다. 이미 주문 수정 코드를 다시 작성했는데 오류가 남아 있습니다. 나는 그 오류가 로그에서 나온 것이 아님을 강조합니다. 로그에는 하나의 오류가 없습니다. 테스트 중 결과에서 오류를 발견했습니다. 예시: 1.4654의 가격으로 매수 포지션(주문 번호 1)을 열었습니다. 결과에 추가로 수정(주문 번호 1) 가격 1.4654 및 TakeProfit 1.4752라고 나와 있습니다. 결과에서 추가로 닫기(주문 번호 1) 가격 1.4704 및 TakeProfit 1.4752로 표시됩니다. 이익 = 50.00
StopLoss를 설정하지 않았기 때문에 TakeProfit에 의해서만 닫혀야 하지만 손실 위치의 예입니다. 1.4820의 가격에 매수 포지션(주문 번호 271)을 열었습니다. 결과에 추가로 수정(주문 번호 271) 가격 1.4820 및 TakeProfit 1.4918이라고 나와 있습니다. 결과에서 추가로 닫기(주문 번호 1) 가격 1.4737 및 TakeProfit 1.4918로 표시됩니다. 이익 = - 83.46
내가 100을 넣는 모든 곳에서 TakeProfit
손절매가 설정되지 않았습니다.
수정하는 방법을 모르겠습니다.
이 EA의 코드를 컴파일할 때 = 0 오류 및 0 경고.
내가 사용한 주문 수정 코드는 다음과 같습니다.
테스터의 거래 마감이 표시된 형식으로 작성되면 이것은 orderclose 함수의 결과일 가능성이 큽니다(TP 및 SL은 이와 관련이 없음)
현재 막대에서 도달한 최대값과 최소값만 기억하면 되며 새 막대가 나타나고 이전 막대가 되면 기억된 변수에서 최대값과 최소값을 취합니다.
하지만 어떻게? 내 지표에서 이 작업을 여러 번 시도했지만 작동하지 않습니다! 변수 Z에 max 값을 할당한다고 가정합니다. 새 막대 가 나타나고(추적 가능) 즉시 Z에 새 값이 할당되고 value (Z-1)은 "lost"입니다. 여기에서 Z에 새 값을 할당할 때 일종의 확인이 필요한 것 같습니다(새 막대가 나타나지 않았습니까?). 나는 당신의 전문성과 인내에 의존합니다! 노고에 감사드립니다.
너무 간단해야합니다! M5는 열려 있고 상단은 약간 부풀어 있으며 그 아래 M1은 올바른 설명을 보여줍니다.
그들이 말했듯이 아침은 저녁보다 현명합니다! 좋은 아침!
여기에서 그들은 질문을 하고 소프트웨어 구현에 대한 답변을 얻습니다.
그리고 당신은 잎에서 코멘트를 읽을 수 있습니다;)
이미 주문 수정 코드를 다시 작성했는데 오류가 남아 있습니다.
나는 그 오류가 로그에서 나온 것이 아님을 강조합니다. 로그에는 하나의 오류가 없습니다.
테스트 중 결과에서 오류를 발견했습니다.
예시:
1.4654의 가격으로 매수 포지션 (주문 번호 1)을 열었습니다.
결과에 추가로 수정(주문 번호 1) 가격 1.4654 및 TakeProfit 1.4752라고 나와 있습니다.
결과에서 추가로 닫기(주문 번호 1) 가격 1.4704 및 TakeProfit 1.4752로 표시됩니다.
이익 = 50.00
StopLoss를 설정하지 않았기 때문에 TakeProfit에 의해서만 닫혀야 하지만 손실 위치의 예입니다.
1.4820의 가격에 매수 포지션(주문 번호 271)을 열었습니다.
결과에 추가로 수정(주문 번호 271) 가격 1.4820 및 TakeProfit 1.4918이라고 나와 있습니다.
결과에서 추가로 닫기(주문 번호 1) 가격 1.4737 및 TakeProfit 1.4918로 표시됩니다.
이익 = - 83.46
내가 100을 넣는 모든 곳에서 TakeProfit
손절매가 설정되지 않았습니다.
수정하는 방법을 모르겠습니다.
이 EA의 코드를 컴파일할 때 = 0 오류 및 0 경고.
내가 사용한 주문 수정 코드는 다음과 같습니다.
오류가 어디에 있는지 알려주십시오. 찾을 수 없습니다.
이미 주문 수정 코드를 다시 작성했는데 오류가 남아 있습니다.
나는 그 오류가 로그에서 나온 것이 아님을 강조합니다. 로그에는 하나의 오류가 없습니다.
테스트 중 결과에서 오류를 발견했습니다.
예시:
1.4654의 가격으로 매수 포지션(주문 번호 1)을 열었습니다.
결과에 추가로 수정(주문 번호 1) 가격 1.4654 및 TakeProfit 1.4752라고 나와 있습니다.
결과에서 추가로 닫기(주문 번호 1) 가격 1.4704 및 TakeProfit 1.4752로 표시됩니다.
이익 = 50.00
StopLoss를 설정하지 않았기 때문에 TakeProfit에 의해서만 닫혀야 하지만 손실 위치의 예입니다.
1.4820의 가격에 매수 포지션(주문 번호 271)을 열었습니다.
결과에 추가로 수정(주문 번호 271) 가격 1.4820 및 TakeProfit 1.4918이라고 나와 있습니다.
결과에서 추가로 닫기(주문 번호 1) 가격 1.4737 및 TakeProfit 1.4918로 표시됩니다.
이익 = - 83.46
내가 100을 넣는 모든 곳에서 TakeProfit
손절매가 설정되지 않았습니다.
수정하는 방법을 모르겠습니다.
이 EA의 코드를 컴파일할 때 = 0 오류 및 0 경고.
내가 사용한 주문 수정 코드는 다음과 같습니다.
가치를 찾는 데 도움
하나 지난 X = 5일 동안 의 최대 일일 변동성(일일 고가 - 레이) .
2 지난 X = 130일 동안 의 평균 일일 변동성
3 그리고 최대 일일 변동성 이 A = 75 ~ B = 150 범위에 있도록 if 조건에서 이러한 값을 어떻게 쓸 수 있습니까? - 평균 일일 변동성
1. 먼저 창에 몇 개의 막대가 맞는지 확인하십시오. https://docs.mql4.com/en/windows/WindowBarsPerChart
2. 그런 다음 첫 번째 막대의 날짜를 찾으십시오. https://docs.mql4.com/en/windows/WindowFirstVisibleBar
3. 이 초기 막대와 막대의 수를 알고 이 막대를 살펴보고 그 중 최대값과 최소값을 결정합니다.
4. 이익
옵션 번호 2
https://docs.mql4.com/en/windows/WindowPriceMax
https://docs.mql4.com/en/windows/WindowPriceMin 두 번째 옵션
빠르고 자세한 답변 정말 감사합니다.저도 첫 번째 옵션을 선호했지만 창의 막대 수를 계산하는 방법을 몰랐습니다.두 번째 옵션이 더 간결합니다.
그러나 이전 막대에서 마지막 최대값과 최소값을 "잡는" 방법은 무엇입니까?미리 감사합니다!
그러나 이전 막대에서 마지막 최대값과 최소값을 "잡는" 방법은 무엇입니까?미리 감사합니다!
현재 막대에서 도달한 최대값과 최소값만 기억하면 되며 새 막대 가 나타나고 이전 막대가 되면 기억된 변수에서 최대값과 최소값을 취합니다.
현재 막대에서 도달한 최대값과 최소값만 기억하면 되며 새 막대가 나타나고 이전 막대가 되면 기억된 변수에서 최대값과 최소값을 취합니다.
변수 z를 정적으로 선언하거나 전역 영역에서 선언합니다.
새 값을 할당하기 전에 새 막대 를 확인하고 값과 현재 값의 차이를 확인한 다음 새 값을 할당해야 합니다.
테스터의 거래 마감이 표시된 형식으로 작성되면 이것은 orderclose 함수의 결과일 가능성이 큽니다(TP 및 SL은 이와 관련이 없음)
감사합니다. 하지만 코드에 오류가 없습니다.