[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 451

 
sss2019 :

Bunu düşünmek istemediğimi anlıyorum, ancak sorun sizin için açıksa en azından bir ipucu verebilir misiniz?

Lütfen tüm kodu sağlayın
 
ilunga :

Hayır, bu yalnızca verilerin bir tarih parçasıyla eşleştiği anlamına gelir.

Örneğin, bunları manuel olarak da sürebilirsiniz. Veya bir metin dosyasından yazın. Veya kasada alın.


Sonuçta, "1.25 1.16 1.73 1.35" bazı koşullu verileri kullanarak bile, yıllar önce bazı para birimleri için tarihe girebiliriz. Ancak bu, bir zaman serisi dizisi düzenlediğimiz anlamına gelmez.

Orijinal komut dosyasını biraz değiştirdi:

1. Özel diziye yalnızca son 5 açılış fiyatı kopyalandı.

2. Ras-Comment-oval, kopyalanan 5 açılış fiyatının tümü için özel dizi aldı.

/+------------------------------------------------------------------------------------------+
//|                                                                ArrayGetAsSeries_плюс.mq4 |
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
//------------------------------------ НАЧАЛО START -------------------------------------- 1 -
int start()                                           //функция start
  {                                                   //начало start
   double Timestart= GetTickCount ();                   //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   double array1[];                                   //объявляем массив-приемник (массив, куда будут скопированы данные)
   int element= ArrayCopy (array1,Open, 0 , 0 , 5 );           //копируем данные по максимальным ценам в пользовательский массив (начиная с 1-о бара, а не с нулевого)
   int size= ArraySize (array1);                         //устанавливаем количество элементов массива array1
//----------------------------------------------------------------------------------------- 2 -
   Comment ( "\nФункция ArrayCopy(array1[],Open,0,0,WHOLE_ARRAY) вернула: " ,element,
           "\nФункция ArraySize(array1) вернула: " ,size,
           "\nЗначение цены открытия бара №0 равно " ,array1[ 0 ], "; Время цены открытия бара №0: " , TimeToStr ( iTime ( NULL , 0 , 0 ),TIME_DATE|TIME_MINUTES),
           "\nЗначение цены открытия бара №1 равно " ,array1[ 1 ], "; Время цены открытия бара №1: " , TimeToStr ( iTime ( NULL , 0 , 1 ),TIME_DATE|TIME_MINUTES),
           "\nЗначение цены открытия бара №2 равно " ,array1[ 2 ], "; Время цены открытия бара №2: " , TimeToStr ( iTime ( NULL , 0 , 2 ),TIME_DATE|TIME_MINUTES),
           "\nЗначение цены открытия бара №3 равно " ,array1[ 3 ], "; Время цены открытия бара №3: " , TimeToStr ( iTime ( NULL , 0 , 3 ),TIME_DATE|TIME_MINUTES),
           "\nЗначение цены открытия бара №4 равно " ,array1[ 4 ], "; Время цены открытия бара №4: " , TimeToStr ( iTime ( NULL , 0 , 4 ),TIME_DATE|TIME_MINUTES),
           "\nФункция ArrayGetAsSeries(array1) вернула: " , ArrayGetAsSeries (array1),
           "\nСкрипт выполнялся всего " , GetTickCount ()-Timestart, " миллисекунд, из них: " , MathFloor (( GetTickCount ()-Timestart)/ 1000 ),
           " секунд " ,(( GetTickCount ()-Timestart)/ 1000 - MathFloor (( GetTickCount ()-Timestart)/ 1000 ))* 1000 , " миллисекунд" ); //печать 
           //сообщения на экран
//----------------------------------------------------------------------------------------- 3 -
   return ( 0 );                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -

Bunu anladım:


Şekilden de görülebileceği gibi açılış fiyatları ters sırada endekslenmiştir (barın açılış fiyatının SAYISI (ARTAN sırayla) ve barın açılış fiyatının ZAMANI (AZAN sırayla) ile kanıtlandığı gibi), yani. dizi, bir zaman dizisi dizisi olarak düzenlenmiştir.

ANCAK ArrayGetAsSeries işlevi hala 0 (yanlış) döndürür; bu, özel dizinin bir zaman dizisi dizisi olarak DÜZENLENMEDİĞİ anlamına gelir.

açıklık getirmeni rica ediyorum

Soru : nasıl açıklanır?

PS Sorularıma cevap verdiğiniz için teşekkürler.

 
7777877 :

Orijinal komut dosyasını biraz değiştirdi:

1. Özel diziye yalnızca son 5 açılış fiyatı kopyalandı.

2. Ras-Comment-oval, kopyalanan 5 açılış fiyatının tümü için özel dizi aldı.

Bunu anladım:

Şekilden de görülebileceği gibi açılış fiyatları ters sırada endekslenmiştir (barın açılış fiyatının SAYISI (ARTAN sırayla) ve barın açılış fiyatının ZAMANI (AZAN sırayla) ile kanıtlandığı gibi), yani. dizi, bir zaman dizisi dizisi olarak düzenlenmiştir.

ANCAK ArrayGetAsSeries işlevi hala 0 (yanlış) döndürür; bu, özel dizinin bir zaman dizisi dizisi olarak DÜZENLENMEDİĞİ anlamına gelir.

açıklık getirmeni rica ediyorum

Soru : nasıl açıklanır?

PS Sorularıma cevap verdiğiniz için teşekkürler.

Özellikleri denemedim.

bool ArraySetAsSeries ( void dizisi[], bool kümesi)
Dizideki indeksleme yönünü ayarlar. Set TRUE parametresinin değeri , indeksleme yönünü ters sırada ayarlar, yani son elemanın indeksi sıfırdır. YANLIŞ değeri, normal indeksleme yönünü ayarlar. İşlev önceki durumu döndürür.
Seçenekler:
sıralamak[] - Ayarlanacak sayısal dizi.
Ayarlamak - Dizi indekslemenin yönü.
 
Vinin :

Özellikleri denemedim.

bool ArraySetAsSeries ( void dizisi[], bool kümesi)
Dizideki indeksleme yönünü ayarlar. Set TRUE parametresinin değeri , indeksleme yönünü ters sırada ayarlar, yani son elemanın indeksi sıfırdır. YANLIŞ değeri, normal indeksleme yönünü ayarlar. İşlev önceki durumu döndürür.
Seçenekler:
sıralamak[] - Ayarlanacak sayısal dizi.
Ayarlamak - Dizi indekslemenin yönü.

Bu aşamadaki amacım, şu veya bu işlevin nasıl çalıştığını ve bu özel durumda ArrayGetAsSeries işlevinin nasıl çalıştığını anlamaktır . ArraySetAsSeries işlevini, timeseries dizisinde olduğu gibi dizine eklemeyi zorlayacak set=true parametresiyle kullanabileceğinizi anlıyorum. Ancak benim durumumda ArrayGetAsSeries işlevinin neden 0 döndürdüğünü anlamak istiyorum , ancak dışarıdan dizi bir zaman serisi gibi görünüyor (yani bir zaman serisi gibi indekslenmiş)
 
Sepulca :


i_maTF == Dönem() ??????,

i_maPeriod makul bir değer alıyor???

i_maShiftByPrice ile ilgili bir sorun olabilir mi???

Tam olarak söylemek zor.

Yanlış bilgi görüntüler. İşte tam kod:

#property copyright "hoz"
#property link       ""
#include <stderror.mqh>
#include <stdlib.mqh>

extern string   h1 = "основные параметры машки" ;
extern int      i_maTF = 0 ;
extern int      i_maPeriod = 50 ;
extern int      i_maShiftByPrice = 0 ;
extern int      i_maMethod = 0 ;
extern int      i_maPrice = 0 ;
extern int      i_shiftBarsBack1 = 1 ;                         // Первое значение shift
extern int      i_shiftBarsBack2 = 49 ;                       // Второе значение shift
extern string   h2 = "===============================" ;

string          h3 = "Значения цены и времени в точках А и В гипотенузы" ;
double          price1,                                       // Цена в точке А
               price2,                                       // Цена в точке В
               time1,                                       // Время в точке А
               time2,                                       // Время в точке В
string          h4 = "Переменые массивов цены и времени в точках А и В гипотенузы" ;
double          varsPrice1[ 100 ],                             // Буфер для цены в точке А
               varsPrice2[ 100 ],                             // Буфер для цены в точке В
               varsTime1[ 100 ],                               // Буфер для времени в точке А
               varsTime2[ 100 ],                               // Буфер для времени в точке В

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Red
//+------------------------------------------------------------------+
//|               Функция инициализации индикатора                   |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits ( MarketInfo ( Symbol (),MODE_DIGITS));
   SetIndexBuffer ( 0 ,varsAngle);                           // Связываем массив значений угла с буфером
   SetIndexStyle ( 0 , DRAW_HISTOGRAM ); 
   
// -------------- блок инициализации закончен ----------------------
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|              Функция деинициализации индикатора                  |
//+------------------------------------------------------------------+
int deinit()
  {

// -------------- блок деинициализации закончен ----------------------
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                  Функция итерации эксперта                       |
//+------------------------------------------------------------------+
int start()
  {
   int i, countedBars = IndicatorCounted ();
   int limit = Bars - countedBars;
   if (limit > 100 ) limit = 100 ;
        
   for (i = limit - 1 ;i > 0 ;i--)
    {
      price1 = iMA ( Symbol (),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack1+i);       // Цена в точке А
      price2 = iMA ( Symbol (),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack2+i);       // Цена в точке В
      time1 = iTime ( Symbol (), Period (),i_shiftBarsBack1 + i - 1 );                                               // Время в точке А
      time2 = iTime ( Symbol (), Period (),i_shiftBarsBack2 + i - 1 );                                               // Время в точке В
    
       Print ( "i = " , i, " i_maTF = " , i_maTF, " i_maPeriod = " , i_maPeriod, " i_maShiftByPrice " , i_maShiftByPrice, " i_maMethod = " , i_maMethod, " i_maPrice = " , i_maPrice, " i_shiftBarsBack1 = " , i_shiftBarsBack1);
       string error = GetMyLastError2();
      
   //    Print("vars", DoubleToStr(price1,5));
     //  Print("vars", DoubleToStr(varsPrice1[i],5));
      
      varsPrice1[i] = price1;                                                                         // Массив цен в точке А
      varsPrice2[i] = price2;                                                                         // Массив цен в точке В
      varsTime1[i] = time1;                                                                           // Массив времени в точке А
      varsTime2[i] = time2;                                                                           // Массив времени в точке В
    
   
   //    Print("vars", DoubleToStr(varsPrice1[i],5));

            
       double d = ( MathAbs (varsTime1[i] - varsTime2[i]))* 1.0 ;
       double h = ( MathAbs (varsPrice1[i] - varsPrice2[i]));
      
   //    Print("d = ", d, " h = ", h);
      
       double angle = h/d;
      varsAngle[i] = angle;
    }
   return ( 0 );
  }
  
string GetMyLastError2()
  {
     int err = GetLastError ();
     string serr = ErrorDescription(err);
     return (serr);
  }

/* //+------------------------------------------------------------------+
//|                  Функция рассчёта тангенса угла                  |
//+------------------------------------------------------------------+
double TanA(double d, double h)
 {
   double angle = h/d;
   
  return(0);
 }
// -------------- блок деинициализации закончен ---------------------- */

Uzman günlüğünde aşağıdakileri verir:







14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 25 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 24 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 23 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 22 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 21 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 20 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 19 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 18 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 17 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 16 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 15 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 14 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 13 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 12 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 11 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 10 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 9 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 8 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 7 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 6 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 5 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 4 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 3 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 2 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7
14 : 50 : 36 2010.08 . 11 12 : 30   AngleByTg GBPUSD,M15: i = 1 i_maTF = 50 i_maPeriod = 0 i_maShiftByPrice 0 i_maMethod = 0 i_maPrice = 2 i_shiftBarsBack1 = 7

Gördüğünüz gibi, i_maTF, i_maPeriod ve i_maPrice değişkenleri başlattığımla aynı değil. Sorun nedir?

 
hoz :

Yanlış bilgi görüntüler. İşte tam kod:

Uzman günlüğünde aşağıdakileri verir:

Gördüğünüz gibi, i_maTF, i_maPeriod ve i_maPrice değişkenleri başlattığımla aynı değil. Sorun nedir?

Verdiğiniz kod derlenmiyorsa, günlükte nasıl bir şey almayı başardığınızı merak ediyorum ???

Ve derlerseniz, hiçbir tuhaflık olmayacak.

Dosyalar:
hoz_1.mq4  4 kb
 
TarasBY :

Verdiğiniz kod derlenmiyorsa, günlükte nasıl bir şey almayı başardığınızı merak ediyorum ???

Ve derlerseniz, tuhaflıklar olmayacak.

Her zaman her şeyi normal şekilde derlerim.

Kimsenin kafasını karıştırmamak için kodu gereksiz baskılardan ve değişkenlerden temizledim. Ama aşağıda onları görmek için kaldırmadım, o yüzden derlemedim. İşte derleyen tam kod:

 //+------------------------------------------------------------------+
//|                                                    AngleByTg.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link       ""
#include <stderror.mqh>
#include <stdlib.mqh>

extern string   h1 = "основные параметры машки" ;
extern int      i_maTF = 0 ;
extern int      i_maPeriod = 50 ;
extern int      i_maShiftByPrice = 0 ;
extern int      i_maMethod = 0 ;
extern int      i_maPrice = 0 ;
extern int      i_shiftBarsBack1 = 1 ;                         // Первое значение shift
extern int      i_shiftBarsBack2 = 49 ;                       // Второе значение shift
extern string   h2 = "===============================" ;

string          h3 = "Значения цены и времени в точках А и В гипотенузы" ;
double          price1,                                       // Цена в точке А
               price2,                                       // Цена в точке В
               time1,                                       // Время в точке А
               time2,                                       // Время в точке В
               angle;                                       // Значение возвращаемой тангенсом
string          h4 = "Переменые массивов цены и времени в точках А и В гипотенузы" ;
double          varsPrice1[ 100 ],                             // Буфер для цены в точке А
               varsPrice2[ 100 ],                             // Буфер для цены в точке В
               varsTime1[ 100 ],                               // Буфер для времени в точке А
               varsTime2[ 100 ],                               // Буфер для времени в точке В
               varsAngle[ 100 ];                               // Буфер для хранения значение угла

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Red
//#property indicator_minimum -90
//#property indicator_maximum 90
//+------------------------------------------------------------------+
//|               Функция инициализации индикатора                   |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits ( MarketInfo ( Symbol (),MODE_DIGITS));
   SetIndexBuffer ( 0 ,varsAngle);                           // Связываем массив значений угла с буфером
   SetIndexStyle ( 0 , DRAW_HISTOGRAM ); 
   
// -------------- блок инициализации закончен ----------------------
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|              Функция деинициализации индикатора                  |
//+------------------------------------------------------------------+
int deinit()
  {

// -------------- блок деинициализации закончен ----------------------
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                  Функция итерации эксперта                       |
//+------------------------------------------------------------------+
int start()
  {
 //   if (!isNewBar())
 //   return(0);
    
   int i, countedBars = IndicatorCounted ();
   int limit = Bars - countedBars;
   if (limit > 100 ) limit = 100 ;
        
   for (i = limit - 1 ;i > 0 ;i--)
    {
      price1 = iMA ( Symbol (),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack1+i);       // Цена в точке А
      price2 = iMA ( Symbol (),i_maTF,i_maPeriod,i_maShiftByPrice,i_maMethod,i_maPrice,i_shiftBarsBack2+i);       // Цена в точке В
      time1 = iTime ( Symbol (), Period (),i_shiftBarsBack1 + i - 1 );                                               // Время в точке А
      time2 = iTime ( Symbol (), Period (),i_shiftBarsBack2 + i - 1 );                                               // Время в точке В
    
       Print ( "i = " , i, " i_maTF = " , i_maTF, " i_maPeriod = " , i_maPeriod, " i_maShiftByPrice " , i_maShiftByPrice, " i_maMethod = " , i_maMethod, " i_maPrice = " , i_maPrice, " i_shiftBarsBack1 = " , i_shiftBarsBack1);
       string error = GetMyLastError2();
      
      
//      Print("i = ", i," time1 = ", time1, " price1 = ", price1);
   //    Print("vars", DoubleToStr(price1,5));
     //  Print("vars", DoubleToStr(varsPrice1[i],5));
      
      varsPrice1[i] = price1;                                                                         // Массив цен в точке А
      varsPrice2[i] = price2;                                                                         // Массив цен в точке В
      varsTime1[i] = time1;                                                                           // Массив времени в точке А
      varsTime2[i] = time2;                                                                           // Массив времени в точке В
    
   
   //    Print("vars", DoubleToStr(varsPrice1[i],5));
    
       //Print("i = ", i," time1 = ", time1, " price1 = ", price1);
     //  Print("i = ", i," time2 = ", time2, " price2 = ", price2);
   //    Print("i = ", i," varsTime1[i] = ", varsTime1[i], " varsPrice1[i] = ", varsPrice1[i]);
     // Print("i = ", i," varsTime2[i] = ", varsTime2[i], " varsPrice2[i] = ", varsPrice2[i]);
            
       double d = ( MathAbs (varsTime1[i] - varsTime2[i]))* 1.0 ;
       double h = ( MathAbs (varsPrice1[i] - varsPrice2[i]));
      
   //    Print("d = ", d, " h = ", h);
      
       double angle = h/d;
      varsAngle[i] = angle;
      
 //     Print("i = ", i," varsAngle[i] = ", varsAngle[i]);
    }
   return ( 0 );
  }
  
string GetMyLastError2()
  {
     int err = GetLastError ();
     string serr = ErrorDescription(err);
     return (serr);
  }

/* //+------------------------------------------------------------------+
//|                  Функция рассчёта тангенса угла                  |
//+------------------------------------------------------------------+
double TanA(double d, double h)
 {
   double angle = h/d;
   
  return(0);
 }
// -------------- блок деинициализации закончен ---------------------- */
Dosyalar:
anglebytg.mq4  6 kb
 

Bana yardım et lütfen! Expert Advisor'da yeni bir sipariş açıldığında eskisinin kapanması için nasıl yapılır? Test cihazında iyi çalışıyor, ancak gerçekte, bir nedenden dolayı, yenisini açtığınızda eskisi gidiyor ????????? Programlamada nihayet sıfırlayabiliyorum (((

//---- input parameters
//ooooooooooooooooooooooooooooooooooooooooooooooooo
extern bool In_BUY=true;
extern int SL_buy=62; //---входные параметры по лонгам
extern int Risk_buy=0;
//ooooooooooooooooooooooooooooooooooooooooooooooooo
extern bool In_SELL=true;
extern int SL_sell=62; //---входные параметры по шортам
extern int Risk_sell=0;
//ooooooooooooooooooooooooooooooooooooooooooooooooo

//---- other parameters
static int prevtime=0;
int ticket=0;
int x=1;
//----------------------------------------------
int Magic_BUY =123;
int Magic_SELL =321;


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if(Digits == 5) x=10;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//oooooooooooooooooooooooooooooooooooooooooooooooooooo
if (Time[0] == prevtime) return(0);
prevtime = Time[0];
if (!IsTradeAllowed()) {
prevtime=Time[1]; MathSrand(TimeCurrent());Sleep(30000 + MathRand()); //--- формировка бара---
}
//ooooooooooooooooooooooooooooooooooooooooooooooooooooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO


Trade( Magic_BUY, In_BUY,Ask,0,2, SL_buy, Risk_buy); //---торговля по лонгам


Trade(Magic_SELL,In_SELL,Bid,2,0, SL_sell,Risk_sell); //---торговля по шортам


//ooooooooooooooooooooooooooooooooooooooooooooooooooooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
return(0);//-----------выход из стартовой функции------------
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void Trade(int mn,bool flag,double price,int period_1,int period_2,int sl,int Risk) {

int total=OrdersTotal();

for (int i = 0; i < total; i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES);//---проход по ордерам--


if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) {

if(Open[period_2]>Open[period_1]) { //----условие закрытия ордера---------

OrderClose(OrderTicket(),OrderLots(),price,5*x); RefreshRates();

}

return(0);
}
}

//ooooooooooooooooooooooooooooooooooooooooooooooooooo
ticket = -1;



if ( flag &&

Open[period_1]>Open[period_2] && //----вход в рынок по условию---


OrdersTotal()<2 && //-----ограничения чемпионата------

AccountEquity()>200 &&

IsTradeAllowed()) {

if (mn<200) {

ticket= OrderSend(Symbol(), OP_BUY,lot(Risk_buy),Ask,5,Bid-x*sl*Point,0,DoubleToStr(mn,0),mn,0,Blue);


}


else {

ticket= OrderSend(Symbol(),OP_SELL,lot(Risk_sell),Bid,5,Ask+x*sl*Point,0,DoubleToStr(mn,0),mn,0, Red);

}


RefreshRates();

if ( ticket < 0) { Sleep(30000); prevtime = Time[1]; }

} //-- Exit ---

return(0); }


//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
double lot(int R) { if (R<0)R=0; if (R>80)R=80; //------корректность ввода -------
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
int o = MathAbs(MathLog(minlot) *0.4343) + 0.5;
double lot = minlot;
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
lot = NormalizeDouble(AccountFreeMargin() * 0.00001*R, o);//---
if (AccountFreeMargin() < lot * MarketInfo(Symbol(), MODE_MARGINREQUIRED)) {
lot = NormalizeDouble(AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED), o);
}
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
if(lot < minlot) lot = minlot;
double maxlot =MarketInfo(Symbol(), MODE_MAXLOT);
if(lot > maxlot) lot = maxlot;
return(lot); }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_end_film_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Veya 1 açık, 2 açık-1 kapalı, 3 açık-2 kapalı vb. prensibine göre çalışacak başka bir danışman yazmak mümkündür. Yardım çok ama çok gerekli!
 
al7bar :

Bana yardım et lütfen! Expert Advisor'da yeni bir sipariş açıldığında eskisinin kapanması için nasıl yapılır? Test cihazında iyi çalışıyor, ancak gerçekte, bir nedenden dolayı, yenisini açtığınızda eskisi gidiyor ????????? Programlamada nihayet sıfırlayabiliyorum (((

//---- input parameters
//ooooooooooooooooooooooooooooooooooooooooooooooooo
extern bool In_BUY=true;
extern int SL_buy=62; //---входные параметры по лонгам
extern int Risk_buy=0;

Yer değiştirmek

 if (Open[period_2]>Open[period_1]) { //----условие закрытия ордера---------

 OrderClose ( OrderTicket (), OrderLots (),price, 5 *x); RefreshRates (); 

 }

üzerinde

 if (Open[period_2]>Open[period_1]) { //----условие закрытия ордера---------

 OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 5 *x); RefreshRates (); 

 }
 
7777877 :
Bu aşamadaki amacım, şu veya bu işlevin nasıl çalıştığını ve bu özel durumda ArrayGetAsSeries işlevinin nasıl çalıştığını anlamaktır. ArraySetAsSeries işlevini set=true parametresiyle kullanabileceğinizi anlıyorum; bu, bir zaman serisi dizisinde olduğu gibi dizine eklemeyi zorlayacaktır. Ancak benim durumumda ArrayGetAsSeries işlevinin neden 0 döndürdüğünü anlamak istiyorum , ancak dışarıdan dizi bir zaman serisi gibi görünüyor (yani bir zaman serisi gibi indekslenmiş)

Kesinlikle çünkü sadece bir zaman serisi gibi GÖRÜNÜYOR.

Bu sadece senin kişisel görüşün. Ve orada 1, 2, 1.2, 2.1 sayılarını puanlayarak, 1927'de domuz eti zaman serisine götürüleceksiniz (sayı isteğe bağlıdır). Ancak bu, diziyi bir zaman serisi yapmaz - bunu ilgili işlevle açıkça belirtmeniz gerekir.