이동 평균 값에서 손절매를 추적하는 일부 코드를 추가했습니다. 이 코드는 매수 거래에서는 잘 작동하지만 매도 거래에서는 작동하지 않습니다. 나는 당신이 할 수있는 아무것도 찾을 수 없습니다.
// Trailing Stop Code if (Tradeopen()==true && emastoptrail==TRUE) // Trades are open and Trailing stop feature is turned on
{
for ( int tnumber2 = OrdersTotal ()- 1 ; tnumber2 >= 0 ; tnumber2--) //scan through open orders
{
if ( OrderSelect (tnumber2, SELECT_BY_POS) &&
OrderMagicNumber ()==Mnumber3) // The orders magic number is the same as the magic number used the profit trade
{
if ( OrderType ()==OP_BUY && ( iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ) > OrderStopLoss () )) // The stop loss is less than the moving average value
{
OrderModify ( OrderTicket (), OrderOpenPrice (), iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ), OrderTakeProfit (), 0 ); // Modify Stop to MA value
}
if ( OrderType ()==OP_SELL && ( iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ) < OrderStopLoss () )) // The stop loss is more than the moving average value
{
OrderModify ( OrderTicket (), OrderOpenPrice (), iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ), OrderTakeProfit (), 0 ); // Modify Stop to MA value
}
}
}
}
후행 중지 코드는 문제가 아닐 수 있습니다. 일정 시간이 지나면 대기 주문을 삭제 하는 코드에 문제가 있습니다 ...
// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'if (( iBarShift ( Symbol (), 60 ,tradeopened)>pendinglimit) && Tradeopen()==true) // Check to see if pending orders have expired
{
for ( int tnumber = OrdersTotal ()- 1 ; tnumber >= 0 ; tnumber--) //scan through open orders
{
if ( OrderSelect (tnumber, SELECT_BY_POS) &&
(( OrderType ()==OP_BUYSTOP)|| ( OrderType ()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
(( OrderMagicNumber ()== Mnumber1) || ( OrderMagicNumber ()==Mnumber3))) // The orders magic number is the same as the magic number used in this ea
{
OrderDelete ( OrderTicket ( ) ); // Delete it
}
}
}
각 거래가 열린 후 나는 이것을 실행합니다 ...
tradeopened = TimeHour ( TimeCurrent ());
나는 댓글을 ...
( iBarShift ( Symbol (), 60 ,tradeopened)
그리고 그것은 1000에서 시작하여 각각의 새로운 막대를 계속 계산하고 실행할 때 재설정되지 않습니다 ...
tradeopened = TimeHour ( TimeCurrent ());
이렇게 하면 보류 중인 주문을 삭제하는 검사가 항상 true가 되고 다음 막대 내에서 거래가 트리거되지 않으면 보류 중인 주문이 즉시 삭제됩니다. -__-
거래를 삭제하기 위해 한 번 더 확인하도록 변경하여 보류 중인 주문 을 열 수 있는 최대 허용 시간으로 시간을 되돌리고 거래가 열린 시간과 일치하는지 확인하도록 변경했습니다. :)
for ( int tnumber = OrdersTotal ()- 1 ; tnumber >= 0 ; tnumber--) //scan through open orders
{
if ( OrderSelect (tnumber, SELECT_BY_POS) &&
(( OrderType ()==OP_BUYSTOP)|| ( OrderType ()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
(( OrderMagicNumber ()== Mnumber1) || ( OrderMagicNumber ()==Mnumber3)) && // The orders magic number is the same as the magic number used in this ea
( iTime ( Symbol (), 60 , pendinglimit) == tradeopened))
{
OrderDelete ( OrderTicket () ); // Delete it
}
}
거래를 삭제하기 위해 한 번 더 확인하도록 변경하여 보류 중인 주문을 열 수 있는 최대 허용 시간으로 시간을 되돌리고 거래가 열린 시간과 일치하는지 확인하도록 변경했습니다. :)
당신은 내가 상상했던 것과 거의 같은 것을 가지고 있습니다. . . .
tradeopened 변수를 사용하는 데 문제가 있습니다. . . 열린 거래가 있고 EA가 종료되면 해당 변수의 정보를 잃게 됩니다. . . 이것을 OrderOpenTime ()으로 대체하고 다음과 같이 하십시오. . .
for ( int tnumber = OrdersTotal ()- 1 ; tnumber >= 0 ; tnumber--) //scan through open orders
{
if ( OrderSelect (tnumber, SELECT_BY_POS) &&
(( OrderType ()==OP_BUYSTOP)|| ( OrderType ()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
(( OrderMagicNumber ()== Mnumber1) || ( OrderMagicNumber ()==Mnumber3)) && // The orders magic number is the same as the magic number used in this ea
( iBarShift ( OrderSymbol (), PERIOD_H1 , OrderOpenTime ()) - pendinglimit) <= 0 )); // <----------- this . . .
{
OrderDelete ( OrderTicket () ); // Delete it
}
}
네, 댓글을 다시 읽어보니 제가 한 일은 잘못되었습니다.
시간[0]을 사용해야 합니까?
예, 또는 . . . .
그것은 랩터를 고쳤습니다.
------> http://clip2net.com/s/14aYs
그것은 랩터를 고쳤습니다.
------> http://clip2net.com/s/14aYs
당신은 많은 도움이되었습니다. 마침내 나는 이제 전략 조정을 시작할 수있는 상태에서 ea를 갖게되었습니다. 정말 감사합니다만 마지막으로 죄송하다는 말씀을 들으셨을 것 같은데요 하하
WHRoeder에게도 큰 감사를 드립니다.Sooo.. 끝났다고 생각했잖아 lol
이동 평균 값에서 손절매를 추적하는 일부 코드를 추가했습니다. 이 코드는 매수 거래에서는 잘 작동하지만 매도 거래에서는 작동하지 않습니다. 나는 당신이 할 수있는 아무것도 찾을 수 없습니다.
후행 중지 코드는 문제가 아닐 수 있습니다. 일정 시간이 지나면 대기 주문을 삭제 하는 코드에 문제가 있습니다 ...
각 거래가 열린 후 나는 이것을 실행합니다 ...
나는 댓글을 ...
그리고 그것은 1000에서 시작하여 각각의 새로운 막대를 계속 계산하고 실행할 때 재설정되지 않습니다 ...
이렇게 하면 보류 중인 주문을 삭제하는 검사가 항상 true가 되고 다음 막대 내에서 거래가 트리거되지 않으면 보류 중인 주문이 즉시 삭제됩니다. -__-
아하하하하하하하하하하하하하하하하하하하하하하하
고쳤을 수도 있을 것 같은데....
거래를 삭제하기 위해 한 번 더 확인하도록 변경하여 보류 중인 주문 을 열 수 있는 최대 허용 시간으로 시간을 되돌리고 거래가 열린 시간과 일치하는지 확인하도록 변경했습니다. :)
고쳤을 수도 있을 것 같은데....
거래를 삭제하기 위해 한 번 더 확인하도록 변경하여 보류 중인 주문을 열 수 있는 최대 허용 시간으로 시간을 되돌리고 거래가 열린 시간과 일치하는지 확인하도록 변경했습니다. :)
당신은 내가 상상했던 것과 거의 같은 것을 가지고 있습니다. . . .
tradeopened 변수를 사용하는 데 문제가 있습니다. . . 열린 거래가 있고 EA가 종료되면 해당 변수의 정보를 잃게 됩니다. . . 이것을 OrderOpenTime ()으로 대체하고 다음과 같이 하십시오. . .
또한 랩터 나는 당신의 두뇌를 선택해야합니다.... 다시 :)
이동 평균 값을 도 단위로 변환하는 방법이 있습니까? 수학 포럼을 찾을 수 있는지 알아보기 위해 지금 인터넷 검색을 하고 있습니다. 그렇게하면 옆으로 시장을 감지하고 추세를 정리하고 정리하는 것이 쉬울 것입니다.