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

 
Dimka-novitsek :
Derler ancak çalışmaz.

Baktı. ServiceRefreshChart () işlevi sizin için kullanılamaz.

Hangi seçenek çalışmıyor? Ve bu zaten çok fazla. Bir komut dosyası ve ayrı bir grafik içeren seçenek her zaman çalışacaktır.

1. Bir grafik açın, örneğin EURUSD H1.

2. Komut dosyasında:

 void start()
  {
   int hwndChart = WindowHandle ( "EURUSD" , PERIOD_H1 );
   while (! IsStopped ())
    {
     for ( int i = 0 ; i < 9 && ! IsStopped (); i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
      }
    }
  }

3. Komut dosyasını başka bir grafikte çalıştırın.

4. EURUSD H1 grafiği TF'yi değiştirecek.

 
Teşekkür ederim!
 
Senaryoyu grafiğe sürüklerim, hem danışmanın takıldığı yerde hem de diğerinde hiçbir şey olmaz. İlk defa bir script kullanıyorum. Öyle görünüyor.
 //+------------------------------------------------------------------+
//|                                                   таймфрейм .mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle ( "EURUSD" , PERIOD_H1 );
   while (! IsStopped ())
    {
     for ( int i = 0 ; i < 9 && ! IsStopped (); i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
      }
    }
  }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
Danışman yani.
 //+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle ( Symbol (), Period ());
   while (! IsStopped ())
    {
     for ( int i = 0 ; i < 9 ; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
ve sırasıyla bir seçenek olarak
 //+------------------------------------------------------------------+
//|                                                 таймфреймммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
int hwndChart = NULL ;
void init()
 {
  hwndChart = WindowHandle ( Symbol (), Period ()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000 ); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
   while (! IsStopped ())
   {
     for ( int i = 0 ; i < 9 ; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
     }
   }
 }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
 

Bu komut dosyası benim için çalışıyor:

 #include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle ( "EURUSD" , PERIOD_H1 );
   while (! IsStopped ())
    {
     for ( int i = 0 ; i < 9 && ! IsStopped (); i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
      }
    }
  }

Bu Uzman Danışman garip bir şekilde çalışıyor. İşe yaramadığını söyleyebilirsin. Kendi başına, TF yalnızca M5'e kadar geçiş yapar.

 #include <ServicesMT4.mqh>
int hwndChart = NULL ;

void init()
 {
   if ( UninitializeReason () != REASON_CHARTCHANGE ) hwndChart = WindowHandle ( Symbol (), Period ()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000 ); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
   while (! IsStopped ())
   {
     for ( int i = 0 ; i < 9 ; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
     }
   }
 }
Doğal tikleri bekleyeceğim. Sorunun nereden geldiği belli değil. Yeni MT4 yapılarında bir şeyler değişti.
 
Zhunko :

Bu komut dosyası benim için çalışıyor:

Bu Uzman Danışman garip bir şekilde çalışıyor. İşe yaramadığını söyleyebilirsin. Kendi başına, TF yalnızca M5'e kadar geçiş yapar.

Doğal tikleri bekleyeceğim. Sorunun nereden geldiği belli değil. Yeni MT4 yapılarında bir şeyler değişti.


Bu doğru, neden sürekli buggy olan ve kullanılamayacak kadar çok yazılıma ihtiyacımız var?

Standart özellikleri kullanın ve her şey yoluna girecek.

Endeksi çizelgeye atın ve keneler yerine manuel olarak güncelleyin.

Ayarlarda DLL'yi etkinleştirmeyi unutmayın.

 //+------------------------------------------------------------------+
//|                                                    таймфрейм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#property indicator_chart_window
#import "user32.dll"
   int    PostMessageA( int   hWnd, int   Msg, int   wParam, string lParam);
#import
#define WM_COMMAND                     0x0111
int delimiter = 0 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { //return;
   int     counted_bars= IndicatorCounted ();
//----
   if (delimiter< 3 ){delimiter++; Comment (delimiter); return ( 0 );}
   delimiter= 0 ;
   fChangePeriod();
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
void fChangePeriod(){ int ii,hwd = WindowHandle ( Symbol (), Period ());
   switch ( Period ()){
       case PERIOD_W1     : ii = 33134 ; break ; //PERIOD_D1;
       case PERIOD_D1     : ii = 33136 ; break ; //PERIOD_H4;
       case PERIOD_H4     : ii = 33135 ; break ; //PERIOD_H1;
       case PERIOD_H1     : ii = 33140 ; break ; //PERIOD_M30;
       case PERIOD_M30    : ii = 33139 ; break ; //PERIOD_M15;
       case PERIOD_M15    : ii = 33138 ; break ; //PERIOD_M5;
       case PERIOD_M5     : ii = 33137 ; break ; //PERIOD_M1;
       case PERIOD_M1     : ii = 33141 ; break ; //PERIOD_W1;
   }     
   PostMessageA(hwd, WM_COMMAND, ii, 0 );
   return ;
}
 
//+------------------------------------------------------------------+
// Скрипт для переключ таймфрейма.
// Для работы скрипта необходимо разрешить вызов функций из системных DLL:
// Сервис -> Настройки  -> Советники -> Разрешить импорт DLL.
#property show_inputs
#import "user32.dll"
        int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
        void keybd_event(int bVk,int bScan,int dwFlags,int dwExtraInfo);
#import
#define WM_COMMAND 0x0111
extern int Per=5;
//+------------------------------------------------------------------+
int  start()
{int wParam,hWnd=WindowHandle(Symbol(),Period());
switch(Per)
        {case PERIOD_M1: wParam=33137;break;
         case PERIOD_M5: wParam=33138;break;
         case PERIOD_M15:wParam=33139;break;
         case PERIOD_M30:wParam=33140;break;
         case PERIOD_H1: wParam=33135;break;
         case PERIOD_H4: wParam=33136;break;
         case PERIOD_D1: wParam=33134;break;
         case PERIOD_W1: wParam=33141;break;
         case PERIOD_MN1:wParam=33334;break;}
PostMessageA(hWnd,WM_COMMAND,wParam,0);
keybd_event(0xD,0,0,0);keybd_event(0x23,0,0,0);return(0);}
//+------------------------------------------------------------------+ 
 
FAQ :


Doğru, neden sürekli buggy olan bir yazılıma ihtiyacımız var ki kullanılamıyor?

Standart özellikleri kullanın ve her şey yoluna girecek.

Endeksi çizelgeye atın ve keneler yerine manuel olarak güncelleyin.

Ayarlarda DLL'yi etkinleştirmeyi unutmayın.

Gerçekler neler? Ya şaka yapıyor olsaydım? Kontrol bile edemiyorsun. Belirli nitelikler gereklidir.

PostMessage () ile ve her şey benim için çalışıyor. Sadece bu yanlış. SendMessage() ile yapmayı deneyin. Umarım farkı biliyorsundur.

Rüstem, herkes en basit yazılımla başa çıkamaz. Şanssızdın. Bazı işletim sistemi bile buggy.

 
Teşekkürler!!!!!!!
 

Senaryo çalışıyor!!!!!

Ancak yalnızca M5'e geçer.

 
Dimka-novitsek :
Senaryo çalışıyor!!!!!
Hangi?