전략적 예측 시스템 - 페이지 39

 
-Aleksey- :
명확한 질문 : 차트의 모든 양초 또는 특정 수의 마지막 양초에 필요한 각 순간의 조건부 지표 값이 필요합니까?
마지막으로 특정 창에서 설정하는 것이 바람직합니다.
 

다음은 내 작업 코드의 일부입니다. 닫는 데 문제가 없었습니다(조금 수정).

int i, total = OrdersTotal(), 슬리피지 = 50;

boolAns;
(i = total-1, i >=0, i--) {
주문 선택(i, SELECT_BY_POS, MODE_TRADES );
if (OrderSymbol() == Symbol()) {
if(주문유형()==OP_BUY) {
Print("구매 종료");
as = 거짓;
동안(Ans==거짓) {
답변 = OrderClose(OrderTicket(),OrderLots(), 입찰, 슬리피지, DodgerBlue);
수면(1000);
새로 고침();
}
}
if(주문유형() == OP_SELL) {
Print("판매 종료");
as = 거짓;
동안(Ans==거짓) {
Ans = OrderClose(OrderTicket(),OrderLots(), 묻기, 미끄러짐, 주황색);
수면(1000);
새로 고침();
}
}
}
}

 
rulabs :

다음은 내 작업 코드의 일부입니다. 닫는 데 문제가 없었습니다(조금 수정).

...

정말 감사합니다!!! 나는 노력할 것이다.
 
Farnsworth :
정말 감사합니다!!! 나는 노력할 것이다.
스레드 주셔서 감사합니다. 무엇이든 물어보세요.
 
Farnsworth :
마지막으로 특정 창에서 설정하는 것이 바람직합니다.

다음과 같이 구현했습니다.

 //---начало блока глобальных переменных---------------
int GLOBAL_DATA_LIMIT;
bool first_run=true;
//---конец блока глобальных переменных
//++++++++++++++++++++++++++++++++++++
//---начало блока инициализации
void OnInit ()
   {
      GLOBAL_DATA_LIMIT= расчет числа данных(длины окна данных), необходимых для расчета окна условного индикатора заданной длины
      ....инициализация
  }
//---конец блока инициализации индикатора
//+++++++++++++++++++++++++++++++++++++++
//---начало блока обновления индикатора--
int OnCalculate (
                   const int rates_total,       // current size of the timeseries array
                   const int prev_calculated,   // size of the timeseries array got by reurn value the last time
                   const datetime & time[],     // Time
                   const double & open[],       // Open
                   const double & high[],       // High
                   const double & low[],         // Low
                   const double & close[],       // Close
                   const long & tick_volume[],   // Tick Volume
                   const long & volume[],       // Real Volume
                   const int & spread[]         // Spread
                )
   {
       if (rates_total< 0 )
      {
         printf ( "На графике отсутствуют исторические данные" );
         return ( 0 );
      }
       if (rates_total<GLOBAL_DATA_LIMIT)
      {
         printf ( "Недостаточно исторических данных, необходимое количество: " + string (GLOBAL_DATA_LIMIT));
         return ( 0 );
      }
       if (prev_calculated== 0 ) // срабатывает при первом запуске, или когда история поменялась
      {
         if (first_run==true) первый расчет при запуске - в момент первого тика после инициализации
         *{
             ArrayCopy (cur_price_array, close, 0 , (rates_total- 1 )-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
            ...
            Со скопированным массивом проводим расчет
            Отображаем результат
            ...   
            first_run=false;
         *}
         else расчет на каждом тике
         {
         в это место вставить код *(без first_run=false;), если считать на каждом тике. Если считать не на каждом тике, а по новому бару, то вставить * в функцию isNewBar
         }         
      }
      
       if (isNewBar( _Period )) расчет на каждом баре
      {
          *{
                       ArrayCopy (cur_price_array, close, 0 , (rates_total- 1 )-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
                      ...
                      Со скопированным массивом проводим расчет
                      Отображаем результат
                      ...
         *}
      }
       return (rates_total);
   } 
//---конец блока обновления индикатора---
 

m(GLOBAL_DATA_LIMIT)개의 복사된 가격 값을 각 막대 또는 틱에 기반으로 하나 이상의 n개의 지표 값을 계산하는 방식입니다.

계산된 값 창의 과거 값이 변경되지 않으면 계산(내부)에서 다음과 같이 진행할 수 있습니다.

- 새로운 값(일)만 계산합니다.

- 계산된 값 창(결과가 있는 배열)을 왼쪽으로 1 인덱스 이동합니다.

- 결과와 함께 배열의 마지막 인덱스에 새 값을 씁니다.


명확한지 모르겠습니다. 코드는 MQL5에 있습니다. 4는 모르겠지만 비슷해야 합니다.

 
-Aleksey- :

...

감사합니다. 조사해 보겠습니다.
 
Risk :

관리자 여러분, 절대 권력은 독재로 이어집니다. 정치적으로 올바른 우리 팀보조차도이 광기를 견디지 못하고 어딘가에 버려졌습니다. :)

적어도 때때로 모든 것을 제자리에 놓을 것이라는 반대가 있어야합니다. 그렇지 않으면 누가 이미 수학의 일부를 심각하게 정의하고 있는지 명확하지 않지만 학생들의 도움 없이는 주문을 닫을 수 없습니다. 내일은 어떻게 될까요?

당신이 야당이라면 나는 교황이다. 작성자에게 할 말은 없으며 게시물의 내용은 0입니다. 실제 반대가 있고 건설적으로 반대합니다. 그리고 트롤은 반대가 될 수 없으며 가장 순수한 형태로 주제를 파괴합니다.
다음 금지 조치를 받게 됩니다.
 
rulabs :
스레드 주셔서 감사합니다. 무엇이든 물어보세요.
동료와 말다툼을 하다가 진솔한 글을 놓칠 뻔 했다. 사이트의 우리 각자는 우리 자신의 것을 제공하므로 "감사합니다"를 완전히 받아들일 수 없습니다. 지점이 흥미롭다면 모든 참가자 덕분입니다.o)
 

스레드를 유지하려면 :)

월요일 11시 15분 모스크바 시간, 어리석게도 분석 없이 시간 측면에서 나는 MT5에서 진실을 열었습니다(이미 익숙해져야 합니다. :) 쌍을 관찰했습니다.

EURUSD와 GBPUSD는 플랫을 보여 열지 않았습니다. 어리석게도 우리는 금요일까지 보류할 것이지만, 우리는 올바른 것을 살펴보고 아마도 매일 수정해야 합니다.

관심 있는 사람이 있으면 볼 수 있습니다.

로그인: 729566

투자자: iuj2seh