MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1467

 

Ve belki daha erken)))

Bunu nereden alabilirim?

Göstergenin kodu özel, bu numaralandırmanın adını nasıl öğrenebilirim?

Ve ne tür bir değişkene ihtiyacım var?

Sadece göstergeleri iCustom aracılığıyla nasıl birleştireceğimi biliyorum ve o zaman bu kader değil.)))

Zor değilse, daha kolay olabilir)))

ENUM_BASE_CORNER denedim, hala çalışmıyor.
 
Сергей :

Ve belki daha erken)))

Bunu nereden alabilirim?

Göstergenin kodu özel, bu numaralandırmanın adını nasıl öğrenebilirim?

Ve ne tür bir değişkene ihtiyacım var?

Sadece göstergeleri iCustom aracılığıyla nasıl birleştireceğimi biliyorum ve o zaman bu kader değil.)))

Zor değilse, daha kolay olabilir)))

ENUM_BASE_CORNER denedim, hala çalışmıyor.

İşte bir örnek.

İlk seçenek, normal ENUM_BASE_CORNER numaralandırmasını kullanmaktır.

İkinci seçenek, özel bir numaralandırma kullanmaktır.

Ardından, iCustom'da, gerekli olan yere, seçtiğiniz seçeneğe bağlı olarak base veya my_base değişkenini koyun.

Dosyalar:
100.mq4  5 kb
 
Сергей :

Merhaba.

Söyle bana, kafamı kırdım.

iCustom aracılığıyla bir gösterge kaydettim ve bir sorunla karşılaştım, göstergede seçenekli bir metin menüsü var, açılıyor ve orada birkaç öğe yazılıyor, bence anlaşılabilir)

Peki bunu menüme nasıl kaydedebilirim?

harici int HIT = 0; dönmez, görüntülenmeyi durdurur, parametresiz olarak görüntülenmesini sağlarım.

belki ENUM aracılığıyla, hangisini seçmeli ya da belki başka bir şey?

Şimdiden teşekkürler.

iCustom'daki (,,,,,,,) tüm parametreleri doğru sırayla yazdınız mı?

 

Herkese iyi günler. Siparişleri açarken veri toplamaya çalışıyorum. bir sipariş açarken, 1,2,3 mumlarındaki adx göstergesinin değerini dosyaya yazmak istiyorum.

Bunun için şunları yapıyorum. Data dizinini açtım, tester klasörüne gittim, bu klasörde files klasörüne gittim ve orada "ZNA4_ADX.csv" adında bir dosya oluşturdum. uzantılı kitaplık dosyasında ayrıca . mqh işlevi şekillendirmeye başladı. Aşağıda fonksiyonun yorumlanmış kodu bulunmaktadır.

 void writing_adx_screen1_to_file( int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen ( "ZNA4_ADX.csv" , FILE_WRITE , ';' );
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

   double adx1= iADX ( Symbol (), //СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1, // ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
, 1 );

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX ( Symbol (), //СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1, // ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
, 2 );
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX ( Symbol (), //СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1, // ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
, 3 );
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if (hendel> 0 )
FileWrite (hendel, "ордер " +( string )i_param+ " " +( string )adx1,( string )adx2,( string )adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose (hendel);

   
   } //---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

Verilerin yaklaşık olarak aşağıdaki ekran görüntüsündeki gibi kaydedilmesini istiyorum.

ÖRNEK VERİLERİ NASIL KAYDETMEK İSTİYORUM


Yani metnin kırmızı rengi elle yazacağım kapaktır. Ve 2. satır, işlevi kullanarak kaydetmem gereken şey zaten. Yani test sırasında 1 sipariş numarası. Ve üç adx değeri gitti. Ayrıca testte ikinci sırayı açarken sıra numarasının 2 olacağı ve adx değerlerinin olacağı aşağıdaki satıra ihtiyaç vardır. bu siparişi açmadan önce üç mum için yazılacak ve bunun gibi testte kaç sipariş serbest bırakılacak ...

Aşağıdaki kod parçacığında gösterildiği gibi danışman kodunda işlevin kendisini çağırıyorum.


   //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
   if (f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0 )
  { // НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
       if ( OrderSend ( Symbol (),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print ( "ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО" ); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera); // ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
       if ( GetLastError ()== 141 ){ Alert ( "ОШИБКА № " + string ( GetLastError ())+ "УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА" ); ExpertRemove ();} // ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



Test hatasız gidiyor, ancak dosyada bu sonucu aldım ( AŞAĞIDAKİ EKRAN).

DOSYA YAZARKEN NELER YAPILDI


Sonuç, birinci sıra ve üç değer içeren bir satırdı, ancak testte 189 açık sipariş vardı. ben neyim ve   nerede   Emir sayma değişkenini arttırmayı unuttum ve ilk siparişten sonraki verileri 2.3-189 satıra nasıl yazabilirim?   Büyük bir istek, beni temel koda ve diğer komik yerlere göndermemek - metni okumak benim için zor ve başka birinin kodunu okumak neredeyse imkansız. Bu nedenle, ihtiyacım olan formdaki verileri alabilmem için neyin eklenmesi gerektiğini ve nereye eklenmesi gerektiğini bana anlaşılır bir şekilde söyleyin? P / S zor değilse, ekleyerek anı vurgulayın ...

 
DanilaMactep :

Herkese iyi günler. Siparişleri açarken veri toplamaya çalışıyorum. bir sipariş açarken, 1,2,3 mumlarındaki adx göstergesinin değerini dosyaya yazmak istiyorum.

Bunun için şunları yapıyorum. Data dizinini açtım, tester klasörüne gittim, bu klasörde files klasörüne gittim ve orada "ZNA4_ADX.csv" adında bir dosya oluşturdum. uzantılı kitaplık dosyasında ayrıca . mqh işlevi şekillendirmeye başladı. Aşağıda fonksiyonun yorumlanmış kodu bulunmaktadır.

Verilerin yaklaşık olarak aşağıdaki ekran görüntüsündeki gibi kaydedilmesini istiyorum.


Yani metnin kırmızı rengi elle yazacağım başlıktır. Ve 2. satır, işlevi kullanarak kaydetmem gereken şey zaten. Yani test sırasında 1 sipariş numarası. Ve üç adx değeri gitti. Ayrıca testte ikinci sırayı açarken sıra numarasının 2 olacağı ve adx değerlerinin olacağı aşağıdaki satıra ihtiyaç vardır. bu siparişi açmadan önce üç mum için yazılacak ve bunun gibi testte kaç sipariş serbest bırakılacak ...

Aşağıdaki kod parçacığında gösterildiği gibi danışman kodunda işlevin kendisini çağırıyorum.




Test hatasız gidiyor, ancak dosyada bu sonucu aldım ( AŞAĞIDAKİ EKRAN).


Sonuç, birinci sıra ve üç değer içeren bir satırdı, ancak testte 189 açık sipariş vardı. ben neyim ve   nerede  Emir sayma değişkenini arttırmayı unuttum ve ilk siparişten sonraki verileri 2.3-189 satıra nasıl yazabilirim?   Büyük bir istek, beni temel koda ve diğer komik yerlere göndermemek - metni okumak benim için zor ve başka birinin kodunu okumak neredeyse imkansız. Bu nedenle, ihtiyacım olan formdaki verileri alabilmem için neyin eklenmesi gerektiğini ve nereye eklenmesi gerektiğini bana anlaşılır bir şekilde söyleyin? P / S zor değilse, ekleyerek anı vurgulayın ...

Bir dosya yalnızca bir FILE_WRITE bayrağıyla açılırsa, dosyadaki her şey silinir. Mevcut verileri bir dosyaya kaydetmek için dosyayı okuma ve yazma için açmalısınız.

Ardından işaretçiyi dosyanın sonuna taşımayı unutmayın.

 
Alexey Viktorov :

Bir dosya yalnızca bir FILE_WRITE bayrağıyla açılırsa, dosyadaki her şey silinir. Mevcut verileri bir dosyaya kaydetmek için dosyayı okuma ve yazma için açmalısınız.

Ardından işaretçiyi dosyanın sonuna taşımayı unutmayın.

Alexey, hatayı hangi yönde "kazacağınızı" önerdiğiniz için çok teşekkür ederim - Pooka satır satır kayıt yapmayı başardı - her şeyi analiz için kullanılabilecek bir formda taramaya devam ediyor)))
 

Dizi değerleri birbirini takip eden RAM hücrelerindedir. Kullanılmayan hücrelerin maksimum uzunluğuna bağlı olabilir.

 
Bu neden işlev adresleriyle çalışmıyor?
 template < typename T>
typedef T (*Fun)( const int , const int , const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit ()
  {
   calculation  = test;
   function     = Dis_HL_Value;
   //-----------------------------------------------------------------
   return ( INIT_SUCCEEDED );
  }
 
Merhaba, bunun iki boyutlu bir dizi bildirimi olup olmadığını söyleyebilir misiniz?
       ArrayInitialize (ZigZagBuffer, 0.0 );
Şimdiden teşekkürler!
 
Дмитрий :
Merhaba, bunun iki boyutlu bir dizi bildirimi olup olmadığını söyleyebilir misiniz? Şimdiden teşekkürler!

Hayır, bu önceden bildirilmiş olanın başlatılmasıdır.

Neden: