아침까지 지속되지 않았습니다. 조금 나아지긴 했지만 주문으로 화단이 있는 곳은 피할 수 없었다. 필요한 조건에서 단일 주문을 등록하려면 어떻게 해야 합니까? 당신은 언급했습니다: 아니오, 그것은 작동하지 않습니다. 주문 이력 분석을 통해서만 가능합니다. 이것이 어떻게 가능하거나 다른 무엇을 적용할 수 있습니까?
이 정도
int i,orders_total=OrdersTotal();
bool order_on_last_bar= false ;
if (orders_total> 0 ) //если есть ордера
{
for (i=orders_total- 1 ;i>= 0 ;i--) //перебираем их все
{
OrderSelect(i,SELECT_BY_POS);
if (iBarShift(OrderOpenTime())== 0 ) //если номер бара, соответствующего сремени открытия, равен 0
order_on_last_bar= true ; //фиксируем этот факт
}
}
if (order_on_last_bar== false ) // на нулевом баре нет открытых ордеров
{
//делаем то что нам нужно
}
iBarShift 함수의 모든 값을 채웠습니다 (이전에 컴파일은 맹세했습니다). int i는 이미 위에서 선언되었고, 이 반복을 시도하고 제거하고 실험의 순수성을 위해 j로 대체했지만 작동하지 않습니다. - 일부 바에서는 여러 개/닫기 주문을 받습니다. 아래는 여는 조건이 있는 코드입니다. 어쩌면 제가 뭔가를 망쳤을 수도 있습니다. 다른 무엇을 할 수 있습니까?
int j,orders_total= OrdersTotal ();
bool order_on_last_bar=false;
if (orders_total> 0 ) //если есть ордера
{
for (j=orders_total- 1 ;j>= 0 ;j--) //перебираем их все
{
OrderSelect (j,SELECT_BY_POS);
if (iBarShift( NULL , 0 ,OrderOpenTime())== 0 ) //если номер бара, соответствующего времени открытия, равен 0
order_on_last_bar=true; //фиксируем этот факт
}
}
if (order_on_last_bar==false) // на нулевом баре нет открытых ордеров
{
while (true) // Цикл закрытия орд.
{
if (Total== 0 && Opn_B==true) // Открытых орд. нет +
{ // критерий откр. Buy
RefreshRates(); // Обновление данныхAlert ( "Попытка открыть Buy. Ожидание ответа.." );
Ticket= OrderSend (Symb,OP_BUY,Lts,Ask, 2 , 0 , 0 ); //Открытие Buyif (Ticket > 0 ) // Получилось :)
{
Alert ( "Открыт ордер Buy " ,Ticket);
return ; // Выход из start()
}
if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибокcontinue ; // Повторная попыткаreturn ; // Выход из start()
}
if (Total== 0 && Opn_S==true) // Открытых орд. нет +
{ // критерий откр. Sell
RefreshRates(); // Обновление данныхAlert ( "Попытка открыть Sell. Ожидание ответа.." );
Ticket= OrderSend (Symb,OP_SELL,Lts,Bid, 2 , 0 , 0 ); //Открытие Selif (Ticket > 0 ) // Получилось :)
{
Alert ( "Открыт ордер Sell " ,Ticket);
return ; // Выход из start()
}
if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибокcontinue ; // Повторная попыткаreturn ; // Выход из start()
}
break ; // Выход из while
}
}
iBarShift 함수의 모든 값을 채웠습니다(이전에 컴파일은 맹세했습니다). int i는 이미 위에서 선언되었고, 이 반복을 시도하고 제거하고 실험의 순수성을 위해 j로 대체했지만 작동하지 않습니다. - 일부 바에서는 여러 개/닫기 주문을 받습니다. 아래는 여는 조건이 있는 코드입니다. 제가 뭔가를 망쳤을 수도 있습니다. 다른 무엇을 할 수 있습니까?
스크립트는 고문과 구별할 수 없습니다.
때때로 #property show_inputs는 어드바이저에서와 같이 매개변수가 있는 대화 상자를 표시하기 위해 스크립트에서 사용되지만(물론 거기에 있습니다) 구별하기 어렵습니다.
알고리즘을 알려주세요.. 낮은 시간에서 높은 시간과 낮은 시간을 찾는 것이 필요합니다.
알고리즘을 알려주세요.. 낮은 시간에서 높은 시간과 낮은 시간을 찾는 것이 필요합니다.
i - 발견 색인을 기억하거나 즉시 사용하십시오.
그리고 iTime (NULL, TF2, i) - 시간이 있을 것입니다.
아침까지 지속되지 않았습니다. 조금 나아지긴 했지만 주문으로 화단이 있는 곳은 피할 수 없었다. 필요한 조건에서 단일 주문을 등록하려면 어떻게 해야 합니까? 당신은 언급했습니다: 아니오, 그것은 작동하지 않습니다. 주문 이력 분석을 통해서만 가능합니다. 이것이 어떻게 가능하거나 다른 무엇을 적용할 수 있습니까?
이 정도
나는 이미 한 번 묻고 득점했지만 이제 다시 그런 기능, 포즈를 여는 최대 볼륨 계산이 필요했습니다. 나는 다음과 같이 씁니다.
그러나 Max_lots는 항상 0과 같습니다... 누군가가 그러한 칩을 계산하기 위한 보다 유능한 설계를 알고 있습니까?
다소 이런식으로
iBarShift 함수의 모든 값을 채웠습니다 (이전에 컴파일은 맹세했습니다). int i는 이미 위에서 선언되었고, 이 반복을 시도하고 제거하고 실험의 순수성을 위해 j로 대체했지만 작동하지 않습니다. - 일부 바에서는 여러 개/닫기 주문을 받습니다. 아래는 여는 조건이 있는 코드입니다. 어쩌면 제가 뭔가를 망쳤을 수도 있습니다. 다른 무엇을 할 수 있습니까?
iBarShift 함수의 모든 값을 채웠습니다(이전에 컴파일은 맹세했습니다). int i는 이미 위에서 선언되었고, 이 반복을 시도하고 제거하고 실험의 순수성을 위해 j로 대체했지만 작동하지 않습니다. - 일부 바에서는 여러 개/닫기 주문을 받습니다. 아래는 여는 조건이 있는 코드입니다. 제가 뭔가를 망쳤을 수도 있습니다. 다른 무엇을 할 수 있습니까?
1. Total 변수는 무엇이며 어디에 값이 할당됩니까?
2. 두 번째 if(Total==0 전에 else if(
1. Total 변수는 무엇이며 어디에 값이 할당됩니까?
Simple Expert Advisor 기사의 예를 기반으로 합니다. https://book.mql4.com/ru/samples/expert
alsu :
2. 두 번째 if(Total==0 전에 else if(
도움이되지 않았습니다. alsu , 말 을 거슬리게 해서 죄송합니다. 하지만 (문제를 끝내기 위해) 정말 해결하고 싶습니다.
괜찮아요.
간단한 EA의 /* */ 코드를 주석 처리하고 Total을 우리가 선언한 변수인 orders_total 로 바꾸십시오.