MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1780

 
законопослушный гражданин # :

내가 볼 수있는 한 차이점은 다음과 같습니다.

적어도 처음부터 끝까지, 심지어 이야기를 끝까지 진행하십시오. 다른 점이 없다. 어쨌든 함수는 가장 최근의 마감 시간을 가진 주문을 찾습니다. 그리고 주문을 삭제하거나 종료하려면 목록 끝에서 검색을 수행해야 합니다. 그렇지 않으면 루프가 주문을 건너뜁니다.

 
законопослушный гражданин # :

내가 볼 수있는 한 차이점은 다음과 같습니다.

이 경우 차이가 없습니다. OrersTotal에서 0까지의 주기는 포지션을 닫거나 주문을 삭제하는 경우에만 있어야 합니다. 다른 경우에는 아마추어.

 
Mihail Matkovskij # :

적어도 처음부터 끝까지, 심지어 이야기를 끝까지 진행하십시오. 다른 점이 없다. 어쨌든 함수는 가장 최근의 마감 시간을 가진 주문을 찾습니다. 그리고 주문을 삭제하거나 종료하려면 목록 끝에서 검색을 수행해야 합니다. 그렇지 않으면 루프가 주문을 건너뜁니다.

함수가 마감 시간이 가장 늦은 주문을 찾는 경우 검색은 기록의 시작 부분이 아니라 끝 부분부터 현재 시간부터 과거까지 분명히 더 빠릅니다.

 
Artyom Trishkin # :

함수가 마감 시간이 가장 늦은 주문을 찾는 경우 검색은 기록의 시작 부분이 아니라 끝 부분부터 현재 시간부터 과거까지 분명히 더 빠릅니다.

반대 방향으로 함수는 가장 최근의 마감 시간을 가진 주문을 더 빨리 찾고 주기가 끝날 때까지 변경하지 않고 결과를 반환합니다. 순방향으로 모든 주문을 반복하고 마지막 주문 중 하나를 반환합니다. 차이점은 변수가 루프를 통과할 때마다 덮어쓰여진다는 것입니다. 네. 그녀는. 하지만 중요하지 않다고 생각합니다. 비록 나는   정방향보다는 역방향으로 순환하는 것을 선호합니다. 어떤 식 으로든 기능이 작동한다는 사실에도 불구하고.

 
안녕하세요 여러분, 프로그래밍 방식으로 차트 창 사이를 전환하는 방법, 즉 프로그램에서 차트를 활성화하는 방법이 있습니까?
 
Maksim Mihajlov # :
안녕하세요 여러분, 프로그래밍 방식으로 차트 창 사이를 전환하는 방법, 즉 프로그램에서 차트를 활성화하는 방법이 있습니까?

있다

CHART_BRING_TO_TOP

다른 모든 항목 위에 그래프 표시

부울

 
Alexey Viktorov # :

있다

CHART_BRING_TO_TOP

다른 모든 항목 위에 그래프 표시

부울

덕분에!

 
Mihail Matkovskij # :

적어도 처음부터 끝까지, 심지어 이야기를 끝까지 진행하십시오. 다른 점이 없다. 어쨌든 함수는 가장 최근의 마감 시간을 가진 주문을 찾습니다. 그리고 주문을 삭제하거나 종료하려면 목록 끝에서 검색을 수행해야 합니다. 그렇지 않으면 루프가 주문을 건너뜁니다.

일반적으로 주문의 로트 크기를 계산하는 것을 제외하고는 완전히 동일한 두 개의 어드바이저를 만들었습니다!!. 결과는 다음과 같습니다.

작동하지 않음(즉, SELL 대신 BAY를 열지 않음)

 void OnTick ()
{
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
 {
//Если появился сигнал на покупку, то откроем ордер на покупку
   if (bSignalBuy())
  {
   if (GetLotSize()>LotControl) vOrderOpenSell();
   else vOrderOpenBuy();
  }
// Если появился сигнал на продажу, то откроем ордер на продажу
   if (bSignalSell())
  {
   if (GetLotSize()>LotControl) vOrderOpenBuy();
   else vOrderOpenSell();
  }
 }
}
,,,
double GetLotSize()
  {
   double Ls= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();}
           }
        }
     }
   return Ls;
  }

WORKING(즉, SELL 대신 BAY를 엽니다 )


 void OnTick ()
{
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
 {
//Если появился сигнал на покупку, то откроем ордер на покупку
   if (bSignalBuy())
  {
   if (GetLotSize()>LotControl) vOrderOpenSell();
   else vOrderOpenBuy();
  }
// Если появился сигнал на продажу, то откроем ордер на продажу
   if (bSignalSell())
  {
   if (GetLotSize()>LotControl) vOrderOpenBuy();
   else vOrderOpenSell();
  }
 }
}
...
double GetLotSize()
  {
   double Ls= 0 ;
   datetime t= 0 ;
   int i=OrdersHistoryTotal();
   for ( int pos= 0 ; pos<i; pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if (t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
 
законопослушный гражданин # :

일반적으로 주문의 로트 크기를 계산하는 것을 제외하고는 완전히 동일한 두 개의 어드바이저를 만들었습니다!!. 결과는 다음과 같습니다.

작동하지 않음(즉, SELL 대신 BAY를 열지 않음)

WORKING(즉, SELL 대신 BAY를 엽니다 )


차이점을 다시 한 번 강조합니다.

1 옵션

 double GetLotSize()
  {
   double Ls= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES ))

옵션 2

 double GetLotSize()
  {
   double Ls= 0 ;
   datetime t= 0 ;
   int i=OrdersHistoryTotal();
   for ( int pos= 0 ; pos<i; pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY ))
 
законопослушный гражданин # :

일반적으로 주문의 로트 크기를 계산하는 것을 제외하고는 완전히 동일한 두 개의 어드바이저를 만들었습니다!!. 결과는 다음과 같습니다.

작동하지 않음(즉, SELL 대신 BAY를 열지 않음)

WORKING(즉, SELL 대신 BAY를 엽니다 )


맹목적으로 OrdersTotal , OrdersHistoryTotal ,

주문선택

=MODE_TRADES

【인】 선택할 데이터 소스입니다. 선택 매개변수가 SELECT_BY_POS일 때 사용됩니다. 다음 값 중 하나일 수 있습니다.

MODE_TRADES (기본값) - 주문은 미결 주문과 보류 주문 중에서 선택됩니다.
MODE_HISTORY - 마감된 주문과 삭제된 주문 중에서 선택합니다.

    OrdersTotal - Торговые функции - Справочник MQL4
    OrdersTotal - Торговые функции - Справочник MQL4
    • docs.mql4.com
    OrdersTotal - Торговые функции - Справочник MQL4