안녕하세요 다시 한 번 마지막 주문에 대한 중지와 관련하여 문제를 다시 제기하고 싶습니다.
테스터 에서 때때로 마지막 주문에 중지를 설정하지 않는다는 점을 명확히 하고 싶습니다.
지금까지 이것은 순방향 테스트에서 발생하지 않았습니다. 그러나 그들이 말했듯이 왜 기다리십니까?
코드
//+-------------------------------------------------------------------------------------+//| Управление StopLoss, TakeProfit |//+-------------------------------------------------------------------------------------+bool ProfitManagement()
{
double StopLossBuy = BuyAP+Profit* Point ; //Вычисляем StopLossdouble StopLossSell = SellAP-Profit* Point ;
RefreshRates();
for ( int good = OrdersTotal ()- 1 ; good >= 0 ; good --) // Выбираем со всего масива ордеров
{
if ( OrderSelect (good, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol()== Symbol ()&&OrderMagicNumber()==MagicNumber) //Выбирам ордера експерта
{
//-------------------------Order Buy----------------------------------------------------- if (BuyCount > 1 ) //Если открыти длинные позицииif (BuyAP < Bid) //Если мы идем по рынку if ( MathAbs (OrderStopLoss() - StopLossBuy) >= Tick) // Профит не равен нужномуif (Bid - StopLossBuy > (PipStepProfit* 0.5 )* Point ) // Если стоп дальше чем 0,5 пипстепif (Bid - StopLossBuy > DedZone) // Уровень достаточно удален от ценыif (WaitForTradeContext()) // Свободен ли торговый поток?if (OrderType() == OP_BUY) // Выбираем ордера Buyif (!OrderModify(OrderTicket(), 0 , NP(StopLossBuy), 0 , 0 , Lime)) // Изменяем StopLoss
{
Alert ( Symbol (), " Хрень со стопами! " , GetLastError ());
return ( false );
}
//-------------------------Окончание блока-----------------------------------------------// далее по логике в таком же духе
개가 코드의 이 섹션을 뒤졌다고 확신합니까? 당신이 보여준 것에서 결론을 도출하는 것은 어렵습니다. 알려지지 않은 변수가 많고 발견 자체가 보이지 않습니다.
원인을 직접 찾으려면 변수 값을 인쇄하거나 주석으로 처리하십시오. 그러면 언제든지 그들의 가치를 볼 수 있습니다.
기본은 존경받는 Mr. Kim의 eOpenByTime Expert Advisor입니다. 나는 다른 사람의 조언자에게서 떼어낸 후행 스탑을 추가하여 주말에 거래를 마감하고 요일에 거래를 엽니다. 이 형식에서 고문은 원래대로 작동합니다.
딜 개시는 이렇습니다, 딜이 열린 요일만 추가했는데 흐트러질 곳이 없을 것 같습니다
if (DayOfWeek()==DayOfWeekOpen
&& TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeOpen)
&& TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeOpen)+Duration)
{
if (!ExistPositions("", Sell, MagicNumber)) {
double sl, tp;
if (Sell) {
if (StopLoss>0) sl=Bid+StopLoss*Point; else sl=0;
if (TakeProfit>0) tp=Bid-TakeProfit*Point; else tp=0;
} else {
if (StopLoss>0) sl=Ask-StopLoss*Point; else sl=0;
if (TakeProfit>0) tp=Ask+TakeProfit*Point; else tp=0;
}
OpenPosition("", Sell, Lots, sl, tp, MagicNumber);
}
}
솔직히 말해서 왜 TimeCurrent가 TimeCurrent + TimeTradeOpen과 비교되는지 잘 모르겠습니다. 여기서 TimeTradeOpen은 TimeTradeOpen = "19:51" 형식의 외부 매개변수입니다. (사실, 이것은 우리에게 필요한 포지션 개시 시간 입니다.) 그리고 이 비교가 작동하는 이유도 이해하지 못합니다. 기간은 EA가 포지션을 개설하려고 시도하는 시간입니다.
기본은 존경받는 Mr. Kim의 eOpenByTime Expert Advisor입니다. 나는 다른 사람의 조언자에게서 떼어낸 후행 스탑을 추가하여 주말에 거래를 마감하고 요일에 거래를 엽니다. 이 형식에서 고문은 원래대로 작동합니다.
딜 개시는 이렇습니다, 딜이 열린 요일만 추가했는데 흐트러질 곳이 없을 것 같습니다
솔직히 말해서 왜 TimeCurrent가 TimeCurrent + TimeTradeOpen과 비교되는지 잘 모르겠습니다. 여기서 TimeTradeOpen은 TimeTradeOpen = "19:51" 형식의 외부 매개변수입니다. (사실 지금이 포지션을 열어야 할 때입니다.) 그리고 이 비교가 왜 효과가 있는지 저도 이해가 되지 않습니다. 기간은 EA가 포지션을 개설하려고 시도하는 시간입니다.
그런 다음 주어진 시간과 요일에 양초를 보는 조건을 추가하고 싶었습니다. 양초가 강세이면 매도하고 약세이면 매수합니다.
마찬가지로, 이전에 작동했던 이 3줄을 복사했지만 지금은 어떤 이유로 원하지 않습니다.
그 후, 이미 포지션 오픈 코드가 있습니다. TimeTradeIf는 TimeTradeIf = "19:51"과 유사한 형식을 가지며 외부 매개변수를 통해서도 설정됩니다.
전체 코드가 꽤 깁니다. 붙여넣으셔야 합니까?
솔직히 말해서, 나는 이미 당신의 문제가 무엇인지 잊어 버렸습니다. 여기 코드의 이 섹션에서 숏 포지션의 존재만 확인하고 숏 포지션의 개시도 등록된 것을 볼 수 있습니다.
if (!ExistPositions( "" , Sell, MagicNumber)) { // вместо Sell должно быть OP_SELL или 1double sl, tp;
if (Sell) {
if (StopLoss> 0 ) sl=Bid+StopLoss* Point ; else sl= 0 ;
if (TakeProfit> 0 ) tp=Bid-TakeProfit* Point ; else tp= 0 ;
}
else { // Это расчёт для OP_BUY - зачем он тут?if (StopLoss> 0 ) sl=Ask-StopLoss* Point ; else sl= 0 ;
if (TakeProfit> 0 ) tp=Ask+TakeProfit* Point ; else tp= 0 ;
}
OpenPosition( "" , Sell, Lots, sl, tp, MagicNumber); // вместо Sell должно быть OP_SELL или 1
} // ну и, если нужен Buy, то OP_BUY или 0
그런 것을 말해 주세요. 특정 조건에서 동시에 주문을 모두 열 수 있는 N명의 고문이 계정에 있습니다. 각 고문은 계정에서 1개 이하의 주문을 확인하지만 결국에는 때때로 다음을 얻습니다. N 주문, 무엇을 할 수 있습니까?
거기 에 연락하면 아마도 이유를 추측하고 원격으로 솔루션에 영감을 줄 것입니다.)
안녕하세요 다시 한 번 마지막 주문에 대한 중지와 관련하여 문제를 다시 제기하고 싶습니다.
테스터 에서 때때로 마지막 주문에 중지를 설정하지 않는다는 점을 명확히 하고 싶습니다.
지금까지 이것은 순방향 테스트에서 발생하지 않았습니다. 그러나 그들이 말했듯이 왜 기다리십니까?
코드
그런 것을 말해 주세요. 특정 조건에서 동시에 주문을 모두 열 수 있는 N명의 고문이 계정에 있습니다. 각 고문은 계정에서 1개 이하의 주문을 확인하지만 결국에는 때때로 다음을 얻습니다. N 주문, 무엇을 할 수 있습니까?
기사 읽기
거래 작업 사이에 일시 중지
오류 146("거래 스레드가 사용 중입니다") 및 처리 방법기사 읽기
거래 작업 사이에 일시 중지
오류 146("거래 스레드가 사용 중입니다") 및 처리 방법덕분에!!
개가 코드의 이 섹션을 뒤졌다고 확신합니까? 당신이 보여준 것에서 결론을 도출하는 것은 어렵습니다. 알려지지 않은 변수가 많고 발견 자체가 보이지 않습니다.
원인을 직접 찾으려면 변수 값을 인쇄하거나 주석으로 처리하십시오. 그러면 언제든지 그들의 가치를 볼 수 있습니다.
기본은 존경받는 Mr. Kim의 eOpenByTime Expert Advisor입니다. 나는 다른 사람의 조언자에게서 떼어낸 후행 스탑을 추가하여 주말에 거래를 마감하고 요일에 거래를 엽니다. 이 형식에서 고문은 원래대로 작동합니다.
딜 개시는 이렇습니다, 딜이 열린 요일만 추가했는데 흐트러질 곳이 없을 것 같습니다
솔직히 말해서 왜 TimeCurrent가 TimeCurrent + TimeTradeOpen과 비교되는지 잘 모르겠습니다. 여기서 TimeTradeOpen은 TimeTradeOpen = "19:51" 형식의 외부 매개변수입니다. (사실, 이것은 우리에게 필요한 포지션 개시 시간 입니다.) 그리고 이 비교가 작동하는 이유도 이해하지 못합니다. 기간은 EA가 포지션을 개설하려고 시도하는 시간입니다.
절대적으로 유추하여 금요일에 포지션 마감을 추가했으며 마감 자체도 인터넷에서 차감되었습니다.
모든 것이 작동하는 동안.
그런 다음 주어진 시간과 요일에 양초를 바라보는 조건을 추가하고 싶었습니다. 양초가 강세이면 매도하고 약세이면 매수합니다.
마찬가지로, 이전에 작동했던 이 3줄을 복사했지만 지금은 어떤 이유로 원하지 않습니다.
그 후, 이미 포지션 오픈 코드가 있습니다. TimeTradeIf는 TimeTradeIf = "19:51"과 유사한 형식을 가지며 외부 매개변수를 통해서도 설정됩니다.
전체 코드가 꽤 깁니다. 붙여넣으셔야 합니까?
안녕하세요 다시 한 번 마지막 주문에 대한 중지와 관련하여 문제를 다시 제기하고 싶습니다.
테스터 에서 때때로 마지막 주문에 중지를 설정하지 않는다는 점을 명확히 하고 싶습니다.
지금까지 이것은 순방향 테스트에서 발생하지 않았습니다. 그러나 그들이 말했듯이 왜 기다리십니까?
코드
문제를 찾았습니다. 코드로 모든 것이 정상입니다. 이 작가는 불가능한 것을 요구한다
기본은 존경받는 Mr. Kim의 eOpenByTime Expert Advisor입니다. 나는 다른 사람의 조언자에게서 떼어낸 후행 스탑을 추가하여 주말에 거래를 마감하고 요일에 거래를 엽니다. 이 형식에서 고문은 원래대로 작동합니다.
딜 개시는 이렇습니다, 딜이 열린 요일만 추가했는데 흐트러질 곳이 없을 것 같습니다
솔직히 말해서 왜 TimeCurrent가 TimeCurrent + TimeTradeOpen과 비교되는지 잘 모르겠습니다. 여기서 TimeTradeOpen은 TimeTradeOpen = "19:51" 형식의 외부 매개변수입니다. (사실 지금이 포지션을 열어야 할 때입니다.) 그리고 이 비교가 왜 효과가 있는지 저도 이해가 되지 않습니다. 기간은 EA가 포지션을 개설하려고 시도하는 시간입니다.
절대적으로 유추하여 금요일에 포지션 마감을 추가했으며 마감 자체도 인터넷에서 차감되었습니다.
모든 것이 작동하는 동안.
그런 다음 주어진 시간과 요일에 양초를 보는 조건을 추가하고 싶었습니다. 양초가 강세이면 매도하고 약세이면 매수합니다.
마찬가지로, 이전에 작동했던 이 3줄을 복사했지만 지금은 어떤 이유로 원하지 않습니다.
그 후, 이미 포지션 오픈 코드가 있습니다. TimeTradeIf는 TimeTradeIf = "19:51"과 유사한 형식을 가지며 외부 매개변수를 통해서도 설정됩니다.
전체 코드가 꽤 깁니다. 붙여넣으셔야 합니까?
솔직히 말해서, 나는 이미 당신의 문제가 무엇인지 잊어 버렸습니다. 여기 코드의 이 섹션에서 숏 포지션의 존재만 확인하고 숏 포지션의 개시도 등록된 것을 볼 수 있습니다.
솔직히 말해서, 나는 이미 당신의 문제가 무엇인지 잊어 버렸습니다. 여기 코드의 이 섹션에서 숏 포지션의 존재만 확인하고 숏 포지션의 개시도 등록된 것을 볼 수 있습니다.
Artem, 여기에서는 모든 것이 정확하고 Sell 변수는 외부적이며 각각 true 또는 false, 1 또는 0 값을 전달합니다.
Kim은 eOpenByTime 을 보았습니다.
논리는 절름발이, 행동 알고리즘입니다.
그가 start() 함수와 그것들이 가지고 있는 변수들을 버렸다면, 뭔가 제안될 수 있습니다.
Artem, 여기에서는 모든 것이 정확하고 Sell 변수는 외부적이며 각각 true 또는 false, 1 또는 0 값을 전달합니다.
Kim은 eOpenByTime 을 보았습니다.
논리는 절름발이, 행동 알고리즘입니다.
그가 start() 함수와 그것들이 가지고 있는 변수들을 버렸다면, 뭔가 제안될 수 있습니다.
결론은 다음과 같습니다. 특정 날짜에 DayOfWeek이면 특정 시간 TimeTrade양초가 강세이면 Sell = true(매도)이고, 약세이면 Sell = false(매수)입니다.
이렇게 되어야 하지만 테스트에서는 판매 거래만 받습니다.
eOpenByTime을 사용하면 주어진 시간에 거래를 열 수 있습니다. 나는 주어진 요일에 다른 거래를 추가했습니다. if (DayOfWeek()==DayOfWeekOpen 여기서 DayOfWeekOpen = 1,2,3,4,5
두 부분으로 코드를 첨부했는데 다른 방식으로 맞지 않아 문제가 있는 조건을 강조 표시했습니다. 그것 없이는 모든 것이 제대로 작동합니다. 즉, 우리는 외부에서 Sell을 설정하고 적절한 요일에 적절한 시간에 올바른 방향으로 거래가 열립니다.
트롤만 잘라냅니다.