기본적으로 특정 시간, 특히 23:00 GMT+2에 두 개의 보류 주문을 설정했습니다. 보류 중인 주문 중 하나는 매도 스탑이고 다른 하나는 매수 스탑입니다. 두 주문은 23:00 캔들(이 경우 14핍)에서 시작점까지 같은 거리에 있습니다. 둘 다 TakeProfit이 28핍(이 경우)이고 StopLoss가 55핍입니다.
이제 두 주문이 모두 완료되면(주문이 만료되기 전 23:00 양초에서 시가에서 14핍 상승 및 하락) 두 주문의 이익실현 이 예를 들어 20핍 증가하기를 원합니다. . 따라서 이 경우 새로운 테이크 이익은 58핍입니다. 그러나 정지 손실은 전체적으로 동일하게 유지되어야 합니다. 본질적으로 내가 하려고 하는 것은 일종의 헤징(hedging)입니다.
두 거래가 열리면 가격이 한 방향으로 꽤 갈 것이므로 두 거래의 이익실현이 증가하면 손실을 상쇄하기에 충분합니다. 이익을 얻으려면 한 거래만 열리고 이익 실현에 도달하거나 두 거래가 모두 열리고 한 방향으로 멀리 가지 않고 이익 실현에 도달합니다.
코드의 그 부분은 내가 생각하는 EA의 다른 부분에 대한 것입니다. 보류 중인 주문을 여는 부분이 수정하려는 부분에 전혀 영향을 미치지 않을까요? 죄송합니다. 특히 원본 게시물에서 코드의 일부를 혼동한 것 같습니다. 그러나 나는 특별히 필요한 코드 부분에 대해 언급한 것을 수행했습니다.
따라서 이 주문을 한 번만 수정하면 됩니다. . . 그러면 답은 간단합니다. 23:00 막대를 확인 하고 주문이 열렸어야 하는 TP를 결정해야 합니다. . . 주문이 동일한 TP에 있으면 수정이 필요하고, 동일한 TP에 있지 않으면 이미 수정된 것이므로 다시 수정할 필요가 없습니다. . . 단순한.
따라서 이 주문을 한 번만 수정하면 됩니다. . . 그러면 답은 간단합니다. 23:00 막대를 확인하고 주문이 열렸어야 하는 TP를 결정해야 합니다. . . 주문이 동일한 TP에 있으면 수정이 필요하고, 동일한 TP에 있지 않으면 이미 수정된 것이므로 다시 수정할 필요가 없습니다. . . 단순한.
수정 및 확인은 두 개의 거래가 열린 경우에만 발생해야 합니다. 이 작업을 수행하려면 어떻게 해야 합니까? 이미 가지고 있는 코드에 추가해야 합니까 아니면 다시 시작해야 합니까?
따라서 본질적으로 두 가지 거래(동일한 심볼과 매직 넘버)가 있는 경우 EA는 기존의 보류 중인 주문(현재 실행됨)과 비교하여 열린 거래의 이익실현 을 확인한 다음 동일하면 다음과 같아야 합니다. 변경되고 반복되면 다시 확인하여 동일하지 않으므로 거래를 더 이상 수정하지 않을 것입니다.
madmax3 : 1. 수정과 확인은 2개의 거래가 열려있을 때만 이루어져야 하는데 어떻게 해야 하나요? 이미 가지고 있는 코드에 추가해야 합니까 아니면 다시 시작해야 합니까?
2. 따라서 본질적으로 두 개의 거래(동일한 심볼과 매직 넘버)가 있는 경우 EA는 기존의 보류 중인 주문(현재 실행됨)과 비교하여 열린 거래의 이익실현을 확인한 다음 동일하면 변경해야 하며, 루프가 반복되면 다시 확인하여 동일하지 않은지 확인하므로 거래를 더 이상 수정하지 않습니까?
1. 미결 주문을 순환하고, 기호, 매직 넘버를 확인하고, 미결 주문 유형 이 아닌 일치 항목이 있을 때 카운터를 증가시킵니다. . . 2를 셀 경우 주문 확인을 완료하면 올바른 기호와 매직 번호에 대해 2개의 미결 주문이 있습니다. . . . 이제 수정할 수 있습니다. . . 2 참조.
2. 아니오, 활성화되어 더 이상 보류 중이 아닌 경우 보류 중인 주문의 TP를 볼 수 없습니다. EA는 23:00 막대를 확인하고 원래의 TP 가 무엇인지 알아내야 합니다. . . 그런 다음 이를 2개의 미결 주문의 TP와 비교합니다. . . . 이 정보에서 수정 여부를 결정할 수 있습니다.
1. 미결 주문을 순환하고, 기호, 매직 넘버를 확인하고, 미결 주문 유형이 아닌 일치 항목이 있을 때 카운터를 증가시킵니다. . . 2를 셀 경우 주문 확인을 완료하면 올바른 기호와 매직 번호에 대해 2개의 미결 주문이 있습니다. . . . 이제 수정할 수 있습니다. . . 2 참조.
2. 아니오, 활성화되어 더 이상 보류 중이 아닌 경우 보류 중인 주문의 TP를 볼 수 없습니다. EA는 23:00 막대를 확인하고 원래의 TP 가 무엇인지 알아내야 합니다. . . 그런 다음 이를 2개의 미결 주문의 TP와 비교합니다. . . . 이 정보에서 수정 여부를 결정할 수 있습니다.
아, 알겠습니다. 이것이 제가 줄곧 노력해 온 것입니다. 지금까지 주문 중 하나가 수정되었지만(특히 내 테스트에서 주문 2인 구매 주문) 계속 수정됩니다. '중단'을 사용하여 반복되지 않도록 해야 합니까? 또한 2개의 미결 주문만 있을 때 미결 주문을 계산하고 수정하려면 어떻게 해야 합니까? 나는 이것을 위해 OrdersTotal()을 사용하려고 시도했지만 제대로 작동하지 않습니다. 각 주문에 대해 두 개의 개별 코드를 만들 필요가 없다고 생각합니다. 맞습니까? 짝수 번호의 열린 주문만 수정되고 반복적으로 수정된다고 말했듯이 OrderSelect()에 대해 다양한 조합을 시도했지만 여전히 이해할 수 없습니다. 이 EA는 거의 완료되었으므로 그냥 끝내고 싶습니다. 나는 이것을 읽었습니다 https://book.mql4.com/trading/ordermodify 이것이 내 상황과 관련이 있습니까? 손절매를 위한 것이지만 본질적으로 이익실현을 위해 필요합니다.
내가 여기서 뭘 잘못하고 있니?
for ( int iPos = OrdersTotal ()- 1 ; iPos >= 1 ; iPos--) if (
OrderSelect (iPos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == MagicNumber // my magic number
&& OrderSymbol () == "EURUSD"// and my pair.
&& ( OrderType () == OP_BUY)
){ OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),Ask+((TakeProfit+ 20 )* Point ), 0 , Blue );}
return ( 0 );
if (
OrderSelect (iPos- 1 , SELECT_BY_POS- 1 )
&& OrderMagicNumber () == MagicNumber
&& OrderSymbol () == "EURUSD"
&& ( OrderType () == OP_SELL)
){ OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),Ask+((TakeProfit- 20 )* Point ), 0 , Blue );}
return ( 0 );
}
TP가 23:00 캔들과 같은지 확인하려면 어떻게 해야 하나요? 열린 주문이 2개 있을 때 수정되는 한 동일한 효과를 얻을 수 있기 때문에 그렇게 필요할까요? 아니면 계속해서 수정되는 주문을 멈추기 위한 것입니까? 예, 문서를 확인했습니다.
두 번째 주문이 수정되기 전에 return(0)으로 인해 start()에서 빠져 나옵니다.
현재 하고 있는 일은 Order by position을 선택하고, 올바른 Magic number가 있는지 확인하고, 올바른 기호인지 확인하고, OP_BUY인지 확인하는 것입니다. . . . 그런 다음 수정합니다. 이미 수정되었는지 여부를 어디에서 결정합니까?
당신 EA 는 중단 에서 복구할 수 있어야 합니다 . .. 주문이 접수되고 MT4가 충돌하는 경우 다시 시작할 때 중단된 위치에서 다시 시작할 수 있어야 합니다.
이것이 주문이 이미 수정되었거나 수정이 필요한지 여부를 결정해야 하는 이유입니다. . . 어떻게 ?
" 특정 시간, 특히 23:00 GMT+2에 두 개의 보류 중인 주문 을 설정했습니다. 보류 중인 주문 중 하나는 매도 스탑이고 다른 하나는 바이 스탑입니다. 두 주문은 모두 오픈에서 동일한 거리에 떨어져 있습니다. 23:00 양초, 이 경우 14핍. 둘 다 TakeProfit은 28핍(이 경우)이고 StopLoss는 55핍입니다. "
23:00 캔들을 참조하여 원래 TP가 어디에 있었는지 계산하고 주문을 확인하고 여전히 원래 TP로 설정되어 있는지 확인할 수 있습니다. 그렇다면 수정할 수 있습니다. . . 그렇지 않은 경우 이미 수정되었으므로 다시 수정하지 마십시오.
주문이 수정되었음을 기록하는 다른 방법이 있습니다. 티켓 번호를 추적합니다. 수정되었을 때 파일에 정보를 기록하고, 다시 수정하려고 할 때 파일을 열고 티켓 번호를 확인하는 등 . . . 원래 TP와 비교하는 것이 훨씬 간단하다고 생각합니다.
파일 쓰기가 끝나면 파일을 닫아야 합니다. . . 이미 열려 있으면 다시 열 필요가 없습니다.
//---------------------------------------------------------------int Handle, // File descriptor
Qnt_Symb; // Number of recorded symbolsstring File_Name= "check.csv" ; // File name
Handle= FileOpen (File_Name, FILE_CSV | FILE_WRITE | FILE_READ , ";" ); //File opening File opened here, outside the loopFileWrite (Handle, "Ticket" , "Magic" , "OTime" , "Type" , "Lots" , "Symbol" , "OPrice" , "S/L" , "T/P" );
for ( int iPos = OrdersTotal ()- 1 ; iPos >= 1 ; iPos--)
{
OrderSelect (iPos,SELECT_BY_POS);
FileWrite (
Handle,
OrderTicket (), //intOrderMagicNumber (), //intTimeToStr ( OrderOpenTime ()), //datetime // this is a string - Time to StringOrderLots (), //doubleOrderSymbol (), //stringOrderOpenPrice (), //doubleOrderStopLoss (), //doubleOrderTakeProfit (), //doubleTimeToStr ( OrderCloseTime () ) //int // this is a string - Time to String
) ; //end file writeFileClose (Handle); // why close the file inside the loop when it was opened outside the loop ?
}
} // what is this code inside of ?
} // end of start//---------------------------------------------------------------
기본적으로 특정 시간, 특히 23:00 GMT+2에 두 개의 보류 주문을 설정했습니다. 보류 중인 주문 중 하나는 매도 스탑이고 다른 하나는 매수 스탑입니다. 두 주문은 23:00 캔들(이 경우 14핍)에서 시작점까지 같은 거리에 있습니다. 둘 다 TakeProfit이 28핍(이 경우)이고 StopLoss가 55핍입니다.
이제 두 주문이 모두 완료되면(주문이 만료되기 전 23:00 양초에서 시가에서 14핍 상승 및 하락) 두 주문의 이익실현 이 예를 들어 20핍 증가하기를 원합니다. . 따라서 이 경우 새로운 테이크 이익은 58핍입니다. 그러나 정지 손실은 전체적으로 동일하게 유지되어야 합니다. 본질적으로 내가 하려고 하는 것은 일종의 헤징(hedging)입니다.
두 거래가 열리면 가격이 한 방향으로 꽤 갈 것이므로 두 거래의 이익실현이 증가하면 손실을 상쇄하기에 충분합니다. 이익을 얻으려면 한 거래만 열리고 이익 실현에 도달하거나 두 거래가 모두 열리고 한 방향으로 멀리 가지 않고 이익 실현에 도달합니다.
이것이 명확하기를 바랍니다. 그렇지 않은 경우 더 명확해야 하는 사진을 제공하겠습니다.
나는 당신의 직접적인 이전 게시물 을 참조했습니다
전체 EA에 대한 수정된 코드는 다음과 같습니다.
이것이 명확하기를 바랍니다. 그렇지 않은 경우 더 명확해야 하는 사진을 제공하겠습니다.
분명합니다. 감사합니다.
따라서 이 주문을 한 번만 수정하면 됩니다. . . 그러면 답은 간단합니다. 23:00 막대를 확인 하고 주문이 열렸어야 하는 TP를 결정해야 합니다. . . 주문이 동일한 TP에 있으면 수정이 필요하고, 동일한 TP에 있지 않으면 이미 수정된 것이므로 다시 수정할 필요가 없습니다. . . 단순한.
분명합니다. 감사합니다.
따라서 이 주문을 한 번만 수정하면 됩니다. . . 그러면 답은 간단합니다. 23:00 막대를 확인하고 주문이 열렸어야 하는 TP를 결정해야 합니다. . . 주문이 동일한 TP에 있으면 수정이 필요하고, 동일한 TP에 있지 않으면 이미 수정된 것이므로 다시 수정할 필요가 없습니다. . . 단순한.
따라서 본질적으로 두 가지 거래(동일한 심볼과 매직 넘버)가 있는 경우 EA는 기존의 보류 중인 주문(현재 실행됨)과 비교하여 열린 거래의 이익실현 을 확인한 다음 동일하면 다음과 같아야 합니다. 변경되고 반복되면 다시 확인하여 동일하지 않으므로 거래를 더 이상 수정하지 않을 것입니다.
1. 수정과 확인은 2개의 거래가 열려있을 때만 이루어져야 하는데 어떻게 해야 하나요? 이미 가지고 있는 코드에 추가해야 합니까 아니면 다시 시작해야 합니까?
2. 따라서 본질적으로 두 개의 거래(동일한 심볼과 매직 넘버)가 있는 경우 EA는 기존의 보류 중인 주문(현재 실행됨)과 비교하여 열린 거래의 이익실현을 확인한 다음 동일하면 변경해야 하며, 루프가 반복되면 다시 확인하여 동일하지 않은지 확인하므로 거래를 더 이상 수정하지 않습니까?
1. 미결 주문을 순환하고, 기호, 매직 넘버를 확인하고, 미결 주문 유형 이 아닌 일치 항목이 있을 때 카운터를 증가시킵니다. . . 2를 셀 경우 주문 확인을 완료하면 올바른 기호와 매직 번호에 대해 2개의 미결 주문이 있습니다. . . . 이제 수정할 수 있습니다. . . 2 참조.
2. 아니오, 활성화되어 더 이상 보류 중이 아닌 경우 보류 중인 주문의 TP를 볼 수 없습니다. EA는 23:00 막대를 확인하고 원래의 TP 가 무엇인지 알아내야 합니다. . . 그런 다음 이를 2개의 미결 주문의 TP와 비교합니다. . . . 이 정보에서 수정 여부를 결정할 수 있습니다.
1. 미결 주문을 순환하고, 기호, 매직 넘버를 확인하고, 미결 주문 유형이 아닌 일치 항목이 있을 때 카운터를 증가시킵니다. . . 2를 셀 경우 주문 확인을 완료하면 올바른 기호와 매직 번호에 대해 2개의 미결 주문이 있습니다. . . . 이제 수정할 수 있습니다. . . 2 참조.
2. 아니오, 활성화되어 더 이상 보류 중이 아닌 경우 보류 중인 주문의 TP를 볼 수 없습니다. EA는 23:00 막대를 확인하고 원래의 TP 가 무엇인지 알아내야 합니다. . . 그런 다음 이를 2개의 미결 주문의 TP와 비교합니다. . . . 이 정보에서 수정 여부를 결정할 수 있습니다.
아, 알겠습니다. 이것이 제가 줄곧 노력해 온 것입니다. 지금까지 주문 중 하나가 수정되었지만(특히 내 테스트에서 주문 2인 구매 주문) 계속 수정됩니다. '중단'을 사용하여 반복되지 않도록 해야 합니까? 또한 2개의 미결 주문만 있을 때 미결 주문을 계산하고 수정하려면 어떻게 해야 합니까? 나는 이것을 위해 OrdersTotal()을 사용하려고 시도했지만 제대로 작동하지 않습니다. 각 주문에 대해 두 개의 개별 코드를 만들 필요가 없다고 생각합니다. 맞습니까?
짝수 번호의 열린 주문만 수정되고 반복적으로 수정된다고 말했듯이 OrderSelect()에 대해 다양한 조합을 시도했지만 여전히 이해할 수 없습니다. 이 EA는 거의 완료되었으므로 그냥 끝내고 싶습니다. 나는 이것을 읽었습니다 https://book.mql4.com/trading/ordermodify 이것이 내 상황과 관련이 있습니까? 손절매를 위한 것이지만 본질적으로 이익실현을 위해 필요합니다.
내가 여기서 뭘 잘못하고 있니?
TP가 23:00 캔들과 같은지 확인하려면 어떻게 해야 하나요? 열린 주문이 2개 있을 때 수정되는 한 동일한 효과를 얻을 수 있기 때문에 그렇게 필요할까요? 아니면 계속해서 수정되는 주문을 멈추기 위한 것입니까? 예, 문서를 확인했습니다.
감사해요,
매드맥스3
두 번째 주문이 수정되기 전에 return(0)으로 인해 start()에서 빠져 나옵니다.
현재 하고 있는 일은 Order by position을 선택하고, 올바른 Magic number가 있는지 확인하고, 올바른 기호인지 확인하고, OP_BUY인지 확인하는 것입니다. . . . 그런 다음 수정합니다. 이미 수정되었는지 여부를 어디에서 결정합니까?
당신 EA 는 중단 에서 복구할 수 있어야 합니다 . .. 주문이 접수되고 MT4가 충돌하는 경우 다시 시작할 때 중단된 위치에서 다시 시작할 수 있어야 합니다.
이것이 주문이 이미 수정되었거나 수정이 필요한지 여부를 결정해야 하는 이유입니다. . . 어떻게 ?
" 특정 시간, 특히 23:00 GMT+2에 두 개의 보류 중인 주문 을 설정했습니다. 보류 중인 주문 중 하나는 매도 스탑이고 다른 하나는 바이 스탑입니다. 두 주문은 모두 오픈에서 동일한 거리에 떨어져 있습니다. 23:00 양초, 이 경우 14핍. 둘 다 TakeProfit은 28핍(이 경우)이고 StopLoss는 55핍입니다. "
23:00 캔들을 참조하여 원래 TP가 어디에 있었는지 계산하고 주문을 확인하고 여전히 원래 TP로 설정되어 있는지 확인할 수 있습니다. 그렇다면 수정할 수 있습니다. . . 그렇지 않은 경우 이미 수정되었으므로 다시 수정하지 마십시오.
주문이 수정되었음을 기록하는 다른 방법이 있습니다. 티켓 번호를 추적합니다. 수정되었을 때 파일에 정보를 기록하고, 다시 수정하려고 할 때 파일을 열고 티켓 번호를 확인하는 등 . . . 원래 TP와 비교하는 것이 훨씬 간단하다고 생각합니다.
지금까지 나는 이것을 가지고,
위에 포함된 파일 작성 코드는,
그러나 이러한 오류가 발생합니다.
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA 버전 2: FileOpen - 열린 파일 이 너무 많습니다.
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA 버전 2: FileWrite의 잘못된 핸들 -1
무슨 일이야?
도대체 왜 당신은 두 가지 옵션 중 가장 어려운 것을 선택했습니까?
파일 쓰기가 끝나면 파일을 닫아야 합니다. . . 이미 열려 있으면 다시 열 필요가 없습니다.
for 루프가 잘못되었습니다. . . 마지막 주문 위치는 1 이 아닌 0 입니다.
도대체 왜 당신은 두 가지 옵션 중 가장 어려운 것을 선택했습니까?