"If(IsNewCandle())"도 호출될 때 "int start()" 함수에서 주문 수정을 호출해야 했습니다. 따라서 매시간 마감 시 orderstoploss > iMA-ATR인 경우 PENDING 주문 을 수정하는 "void OrderModify"가 그에 따라 수정되고 보정됩니다.
그럼 이제 제대로 된 일을 하고 있습니다 :) 이제 눈에서 피가 날 때까지 읽으세요... :)
. . . 오류 1이 발생하면 OrderStopLoss() == BuyStopPrice이므로 동일한 StopLoss 값을 갖도록 주문을 수정하고 있으므로 오류 1이 발생하므로 이제 한편으로는 OrderStopLoss() == BuyStopPrice 및 반면에 OrderStopLoss() < BuyStopPrice
게시물의 링크를 따라가서 눈에서 피가 날 때까지 읽었습니까? 나는 당신이하지 않았다 내기. . . https://www.mql5.com/en/forum/146380 이 문제를 계속 무시하면 계속해서 문제가 발생하고 계속 시간을 낭비하게 됩니다. . . 안아줘 이해해줘 더 이상 괴로워하지마 행복해
0을 제외하고 절대 평등에 대해 두 배를 비교하지 않음 < 이것이 내가 WHRoeder가 찾던 것이 아닐까...?
DomGilberto : 완벽하게 정직하게 말하면, 아니, 나는 이해하지 못한다. 나는 그것을 쓰고 비교를 인쇄하는 실험을했지만 ...
1.51234000001은 1.51234000002와 동일하지 않지만 가격 측면에서 보면 둘 다1.51234이므로 동일합니다. . . 그래서 그들은 동일하지만 하나는 다른 것보다 더 큽니다. 부동 소수점 숫자가 이진법으로 표현되는 방식과 관련이 있으며 정확하지 않으므로 일반적으로 여기 저기에 약간의 오류가 있습니다. . .
그러나 왜 NormalizedDouble, Digits가 그것을 정렬하지 않습니까? 불필요한 불필요한 소수 자릿수가 포함된 이유는 무엇입니까? 미리 정의된 변수에 NormalizeDouble을 사용할 필요가 없다는 사실에 감사하지만 미리 정의되지 않은 변수에 NormalizeDouble을 사용하고 일치하지 않을 때 비교하려고 하는 것이 무슨 의미가 있습니까?
이상한!
"If(Bid > OrderOpenPrice())" 를 수행하고 싶다면 작동하지 않을까요? 모든 비교 진술에 대해 위에 언급된 규칙을 수행해야 합니까? 즉 "If(Bid - OrderOpenPrice() > Point / 2.)?
아 그리고 If(Bid == OrderOpenPrice()), 그 진술과 관련하여 내가 해야 할 일이 있습니까?
그러나 왜 NormalizedDouble, Digits가 그것을 정렬하지 않습니까? 불필요한 불필요한 소수 자릿수가 포함된 이유는 무엇입니까? 미리 정의된 변수에 NormalizeDouble을 사용할 필요가 없다는 사실에 감사하지만 미리 정의되지 않은 변수에 NormalizeDouble을 사용하고 일치하지 않을 때 비교하려고 하는 것이 무슨 의미가 있습니까?
NormalizeDouble은 문제를 해결하지 않으며 1.51234000001을 1.51234로바꾸지 않고 다른 방식으로 "혼잡"합니다. . . 그래서 그것을 사용함으로써 당신은 그것이 당신의 모든 가치를 같은 방식으로 망칠 수 있기를 바라고 있습니다.
돔길베르토 :
"If(Bid > OrderOpenPrice())" 를 수행하고 싶다면 작동하지 않을까요? 모든 비교 진술에 대해 위에 언급된 규칙을 수행해야 합니까? 즉 "If(Bid - OrderOpenPrice() > Point / 2.)?
예, 비교 결과가 정확한지 확인하고 싶다면 그렇습니다.
돔길베르토 :
아 그리고 If(Bid == OrderOpenPrice()), 그 진술과 관련하여 내가 해야 할 일이 있습니까?
좋아, 고마워 - 나는 OrderModify 오류 1을 극적으로 줄였다 - 그러나 나는 여전히 약간씩 계속해서 발생하고 있습니까? MA_trail void인 것 같습니까? 또한 "If(Bid == OrderOpenPrice())를 올바르게 작성하려면 어떻게 해야 합니까?
//+----------------------------------------------------------------------------------------------------------------------------------------+ //Moving Average Trailing Stop Function//+----------------------------------------------------------------------------------------------------------------------------------------+ void MA_Trail()
{
double ATR = iATR ( NULL , 60 , 14 , 1 );
double MA = iMA ( NULL , 60 ,MA_Period, 0 , 1 , 0 , 1 );
double BuyStopPriceMath = MA - ATR;
double SellStopPriceMath = MA + ATR;
double BuyStopPrice = NormalizeDouble (BuyStopPriceMath, 5 );
double SellStopPrice = NormalizeDouble (SellStopPriceMath, 5 );
for ( int b= OrdersTotal ()- 1 ; b>= 0 ; b--)
{
if ( OrderSelect (b,SELECT_BY_POS,MODE_TRADES))
if (OrderMagicNumber()==MagicNumber)
if (OrderSymbol()== Symbol ())
{
if (OrderType()==OP_BUY)
{
if (OrderStopLoss() - BuyStopPrice > Point / 2 .) continue ;
if (BuyStopPrice - OrderStopLoss() > Point / 2 .)
bool BuyModify = OrderModify(OrderTicket(),OrderOpenPrice(),BuyStopPrice,OrderTakeProfit(), 0 , CLR_NONE );
if (!BuyModify) Print ( " Buy Trailing Stop Failed: " , GetLastError ());
}
if (OrderType()==OP_SELL)
{
if (SellStopPrice - OrderStopLoss() > Point / 2 . ) continue ;
if (OrderStopLoss() - SellStopPrice > Point / 2 . )
bool SellModify = OrderModify(OrderTicket(),OrderOpenPrice(),SellStopPrice,OrderTakeProfit(), 0 , CLR_NONE );
if (!SellModify) Print ( " Sell Trailing Stop Failed: " , GetLastError ());
}
}
}
}
DomGilberto : 좋아, 고마워 - 나는 OrderModify 오류 1을 극적으로 줄였다 - 그러나 나는 여전히 약간씩 계속해서 발생하고 있습니까? MA_trail void인 것 같습니까? 또한 "If(Bid == OrderOpenPrice())를 올바르게 작성하려면 어떻게 해야 합니까?
"If(IsNewCandle())"도 호출될 때 "int start()" 함수에서 주문 수정을 호출해야 했습니다. 따라서 매시간 마감 시 orderstoploss > iMA-ATR인 경우 PENDING 주문 을 수정하는 "void OrderModify"가 그에 따라 수정되고 보정됩니다.
그럼 이제 제대로 된 일을 하고 있습니다 :) 이제 눈에서 피가 날 때까지 읽으세요... :)
이것이 문제입니다. . . (OP_SELL과 유사)
. . . 오류 1이 발생하면 OrderStopLoss() == BuyStopPrice이므로 동일한 StopLoss 값을 갖도록 주문을 수정하고 있으므로 오류 1이 발생하므로 이제 한편으로는 OrderStopLoss() == BuyStopPrice 및 반면에 OrderStopLoss() < BuyStopPrice
게시물의 링크를 따라가서 눈에서 피가 날 때까지 읽었습니까? 나는 당신이하지 않았다 내기. . . https://www.mql5.com/en/forum/146380 이 문제를 계속 무시하면 계속해서 문제가 발생하고 계속 시간을 낭비하게 됩니다. . . 안아줘 이해해줘 더 이상 괴로워하지마 행복해
0을 제외하고 절대 평등에 대해 두 배를 비교하지 않음 < 이것이 내가 WHRoeder가 찾던 것이 아닐까...?
if (a > b)
if (a >= b)
if (a != b)
0을 제외하고 절대 평등에 대해 두 배를 비교하지 않음 < 이것이 내가 WHRoeder에서 찾고 있던 것일 수 있습니다...?
완벽하게 정직하게 말하면, 아니, 나는 이해하지 못한다. 나는 그것을 쓰고 비교를 인쇄하는 실험을했지만 ...
1.51234000001은 1.51234000002와 동일하지 않지만 가격 측면에서 보면 둘 다 1.51234이므로 동일합니다. . . 그래서 그들은 동일하지만 하나는 다른 것보다 더 큽니다. 부동 소수점 숫자가 이진법으로 표현되는 방식과 관련이 있으며 정확하지 않으므로 일반적으로 여기 저기에 약간의 오류가 있습니다. . .
이것을 보십시오: 부동 소수점 숫자
그러나 왜 NormalizedDouble, Digits가 그것을 정렬하지 않습니까? 불필요한 불필요한 소수 자릿수가 포함된 이유는 무엇입니까? 미리 정의된 변수에 NormalizeDouble을 사용할 필요가 없다는 사실에 감사하지만 미리 정의되지 않은 변수에 NormalizeDouble을 사용하고 일치하지 않을 때 비교하려고 하는 것이 무슨 의미가 있습니까?
이상한!
"If(Bid > OrderOpenPrice())" 를 수행하고 싶다면 작동하지 않을까요? 모든 비교 진술에 대해 위에 언급된 규칙을 수행해야 합니까? 즉 "If(Bid - OrderOpenPrice() > Point / 2.)?
아 그리고 If(Bid == OrderOpenPrice()), 그 진술과 관련하여 내가 해야 할 일이 있습니까?
그러나 왜 NormalizedDouble, Digits가 그것을 정렬하지 않습니까? 불필요한 불필요한 소수 자릿수가 포함된 이유는 무엇입니까? 미리 정의된 변수에 NormalizeDouble을 사용할 필요가 없다는 사실에 감사하지만 미리 정의되지 않은 변수에 NormalizeDouble을 사용하고 일치하지 않을 때 비교하려고 하는 것이 무슨 의미가 있습니까?
NormalizeDouble은 문제를 해결하지 않으며 1.51234000001을 1.51234로 바꾸지 않고 다른 방식으로 "혼잡"합니다. . . 그래서 그것을 사용함으로써 당신은 그것이 당신의 모든 가치를 같은 방식으로 망칠 수 있기를 바라고 있습니다.
"If(Bid > OrderOpenPrice())" 를 수행하고 싶다면 작동하지 않을까요? 모든 비교 진술에 대해 위에 언급된 규칙을 수행해야 합니까? 즉 "If(Bid - OrderOpenPrice() > Point / 2.)?
예, 비교 결과가 정확한지 확인하고 싶다면 그렇습니다.
아 그리고 If(Bid == OrderOpenPrice()), 그 진술과 관련하여 내가 해야 할 일이 있습니까?
좋아, 고마워 - 나는 OrderModify 오류 1을 극적으로 줄였다 - 그러나 나는 여전히 약간씩 계속해서 발생하고 있습니까? MA_trail void인 것 같습니까? 또한 "If(Bid == OrderOpenPrice())를 올바르게 작성하려면 어떻게 해야 합니까?
당신의 눈은 출혈이 충분하지 않습니다. . .
다음과 같이 할 수 있습니다.
!( MathAbs (FirstPrice - SecondPrice) > HalfAPoint )
조심해 !
여기에서: https://www.mql5.com/en/forum/136997/page4#781986