MQL4 EA'dan grafiğe gösterge ekle - sayfa 5

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MQL4 EA'dan grafiğe gösterge ekle

Alain Verleyen , 2016.02.13 11:39

 #import "user32.dll"
int RegisterWindowMessageW( string MessageName);
int PostMessageW( int hwnd, int msg, int wparam, uchar &Name[]);
#import

#define INDICATOR_NAME "Indicator_name"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void StartCustomIndicator( int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults= false )
  {
   uchar name2[];
   StringToCharArray (IndicatorName,name2, 0 , StringLen (IndicatorName));

   int MessageNumber=RegisterWindowMessageW( "MetaTrader4_Internal_Message" );
   int r=PostMessageW(hWnd,MessageNumber, 15 ,name2);
   Sleep ( 10 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
// In my code where I launch the indicator
   int hWnd=WindowHandle( Symbol (), 0 );
   StartCustomIndicator(hWnd,INDICATOR_NAME);

   return ( INIT_SUCCEEDED );
  }

Selam millet

yukarıdaki kod bir Uzmanda çalışır, Yukarıdaki kodları bir Göstergede nasıl kullanırım?

lütfen yardım et.

 
MT4'te EA kullanarak göstergeyi grafikten çıkarmak mümkün müdür? OnDenit() işlevinde bazı kodlar yazılabilir.
 
Abdul Manan :
MT4'te EA kullanarak göstergeyi grafikten çıkarmak mümkün müdür? OnDenit() işlevinde bazı kodlar yazılabilir.

Belirtilen grafik penceresinden belirtilen ada sahip bir göstergeyi kaldırır. Komut, grafik mesaj kuyruğuna eklenir ve yalnızca önceki tüm komutlar işlendikten sonra yürütülür.

bool ChartIndicatorDelete (
    uzun             chart_id , // grafik kimliği
    int              alt_pencere ,              // alt pencerenin numarası
    const dize     gösterge_kısa isim     // göstergenin kısa adı
);

parametreler

chart_id

[içinde] Grafik Kimliği. 0, geçerli grafiği belirtir.

alt_pencere

[içinde] Grafik alt penceresinin numarası. 0, ana grafik alt penceresini belirtir.

const gösterge_kısaad

[içinde] INDICATOR_SHORTNAME özelliğinde IndicatorSetString() işleviyle ayarlanan göstergenin kısa adı. Bir göstergenin kısa adını almak için ChartIndicatorName() işlevini kullanın.

Geri dönüş değeri

Komut grafik kuyruğuna eklendiyse true, aksi takdirde false döndürür. Hata ayrıntılarını almak için GetLastError() işlevini kullanın.

ChartIndicatorDelete - 图表操作 - MQL4参考
ChartIndicatorDelete - 图表操作 - MQL4参考
  • docs.mql4.com
Removes an indicator with a specified name from the specified chart window. The command is added to chart message queue and executed only after all previous commands have been processed. If the short name of an indicator is not set explicitly, then the name of the file containing the source code of the indicator will be specified during...
 
Alain Verleyen :
Backtest sırasında göstergeyi EA'dan çizelgeye otomatik olarak eklemenin bir yolu var mı?
 
int OnInit()
  {
//---
// In my code where I launch the indicator
   int hWnd=WindowHandle(Symbol(),0);
   StartCustomIndicator(hWnd,INDICATOR_NAME);

   return(INIT_SUCCEEDED);
  }


This code work, but only in OnInit section. If i try transfer it to section CHARTEVENT_OBJECT_CLICK for launch with key, nothing happend. Can you help me ?
 
Merhaba, aynı kodu kullanarak 1 EA'dan 2 gösterge yükleyemiyorum.
 
Bu konu benim için son derece yardımcı oldu ama beni tam olarak oraya götürmedi - buradaki diyalogun kaldığı yerden devam eden bu konuya (https://www.forexfactory.com/showthread.php?p=12764287#) bakın.
 
Kray :

Herkese merhaba,

Georgiy Liashchenko'ya teşekkür etmek istiyorum ve göstergeyi doğrudan grafiğe ekleyen kodunun yükseltilmiş sürümünü AutomaticallyAcceptDefaults ("true" olduğunda) ile paylaşmak istiyorum .

Umarım uzmandan gösterge eklemesi gereken bazı insanlara yardımcı olur.

Not: Özel göstergeler için çalışıyorum, yoksa windows adını değiştirin

Not2 : 15'ten fazla karakter içeren göstergeler kullanmayın (".ex4"ten önce)

merhaba bunu aldım

'user32.dll::RegisterWindowMessageW' çağrılamıyor, 'user32.dll' yüklü değil

Biri bana yardım edebilir mi?


 
Alain Verleyen :

Bu problemim yok (gönderdiğim kodla).

hWnd'nin 0'dan farklı olduğunu kontrol edin.

Ayrıca uyku değerini 50 veya 100'e yükseltmeyi deneyebilirsiniz.

Sevgili Alain,

Tüm açık grafiklere bir gösterge eklemek için kodunuzu kullandım. ancak yalnızca EA'yı çalıştırdığım çizelgeye eklendi.

kod burada, aynı göstergeyi tüm açık grafiklere eklemek için lütfen kodunuzu değiştirebilir misiniz?

lütfen yardım et

BTW (EA ve script olarak denedim, ikisi de göstergeyi tek bir grafiğe ekledi) :)

Saygılarımızla,



#import "user32.dll"

int RegisterWindowMessageW(string İletiAdı);

int PostMessageW(int hwnd,int mesaj,int wparam,uchar &Ad[]);

#içe aktarmak


#define INDICATOR_NAME "CCI_FILTER6C"


int NOS ;

dize soneki="";

dizi sembolü[30];

uzun grafik[30];


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

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

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


int OnStart()

{

NOS=10;

sonek = "c";

sembol[0] = "AUDCAD" + sonek ;

sembol[1] = "AUDCHF" + sonek ;

sembol[2] = "AUDJPY" + sonek;

sembol[3] = "AUDNZD" + sonek;

sembol[4] = "AUDUSD" + sonek ;

sembol[5] = "CADJPY" + sonek ;

sembol[6] = "CHFJPY" + sonek;

sembol[7] = "EURAUD" + sonek ;

sembol[8] = "EURCAD" + sonek ;

sembol[9] = "EURCHF" + sonek;

for(int is=0;is<NOS;is++)

{

int hWnd=WindowHandle(sembol[is],PERIOD_M30);

StartCustomIndicator(hWnd,INDICATOR_NAME);

}

dönüş(0);

}

void StartCustomIndicator(int hWnd,string IndicatorName,bool AutomaticallyAcceptDefaults=true)

{

uchar adı2[];

StringToCharArray(GöstergeAdı,isim2,0,StringLen(GöstergeAdı));


int MessageNumber=RegisterWindowMessageW("MetaTrader4_Internal_Message");

int r=PostMessageW(hWnd,MessageNumber,15,name2);

Uyku(100);

}

 
Abdul Manan :
Merhaba, aynı kodu kullanarak 1 EA'dan 2 gösterge yükleyemiyorum.

bunu da arıyorum - aynı EA'dan birden fazla göstergenin nasıl ekleneceğini çözen var mı?


aynı EA'dan 2 https://docs.mql4.com/indicators/ima eklemek istiyorum


Teşekkürler

Neden: