paladin80 : Zarar durdurunca kapatılmalıdır. Forex ticareti 00:00 GMT'de açılır.
Ancak StopLoss fiyatından değil, StopLoss'tan çok daha düşük olabilen ilk fiyattan kapanacaktır! Ve TakeProfit kesinlikle kapalı. Bu nedenle, zararı durdur ile ayrılmamak daha iyidir ve hafta sonu için pozisyon bırakmamak daha da iyidir!
Özel işlevinizin adresini nasıl öğrenebilirsiniz? Yani, eğer bir listem varsa
int start()
...
int num=myFunc() //вызов функции
...
int myFunc() //описание моей функции
{
...
}
peki myFunc adresini nasıl öğrenebilirim? Daha sonra class parametresine iletilecek WndProc adresinin (kullanıcı tanımlı bir fonksiyon ile tanımlıyorum) nasıl bulunacağını anlamak için gereklidir.
Özel işlevinizin adresini nasıl öğrenebilirsiniz? Yani, eğer bir listem varsa
peki myFunc adresini nasıl öğrenebilirim? Daha sonra class parametresine iletilecek WndProc adresinin (kullanıcı tanımlı bir fonksiyon ile tanımlıyorum) nasıl bulunacağını anlamak için gereklidir.
Adresi olduğunu kim söyledi ki? bu bir MQL4 işlevidir: kelimenin tam anlamıyla derlenmez, ancak programın yürütülmesi sırasında yorumlayıcı aracılığıyla çalıştırılır.
Adresi olduğunu kim söyledi ki? bu bir MQL4 işlevidir: kelimenin tam anlamıyla derlenmez, ancak programın yürütülmesi sırasında yorumlayıcı aracılığıyla çalıştırılır.
Köpeğin gömülü olduğu yer orası. O zaman, robot için yalnızca MQL4 + WinAPI çerçevesinde kendi kendine yazılmış dll'ler olmadan bağımsız bir pencere arayüzü seçimi nedeniyle harcanan 2-3 hafta için üzgünüm. Bunu daha önce anlamamış olmam üzücü, kodum ve geliştirmelerim için üzgünüm.
Özetliyoruz. Kodu dll'nize taşımadan örtüşen (yani bir alt değil) pencere oluşturmak imkansızdır, çünkü WNDCLASS (veya WNDCLASSEX) açıklanırken
typedef struct tagWNDCLASSEX {// это с MSDN
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;//<-
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;
yapıyı bir int dizisine paketlerken okla gösterilen satırlarda
pencere prosedürünün adresi iletilir, yani. bu pencere için fare ve klavye işleyicisi. MQL4'te bir pencere prosedürü, kullanıcı tanımlı bir işlev olarak uygulanabilir, ancak adresi yorumlayıcı içinde alınamaz, dolayısıyla aktarılacak hiçbir şey yoktur. MQL4'te mümkün olan maksimum standart pencere sınıflarını kullanmaktır, ancak bunlar yalnızca alt pencereler olarak kullanımlarını ima eder. Basit bir ifadeyle, gösterge tarafından oluşturulan böyle bir pencere fare ile tutulamaz ve terminalin dışına taşınamaz (çünkü bu bir alt pencere olacaktır), örtüşen bir pencere ise terminalin dışına taşınabilir. Standart pencere sınıflarındaki alt pencereler, herhangi birinin ihtiyacı varsa, mt4gui.dll'de zaten uygulanmaktadır. Ancak fare ve klavye işleyicisi ile örtüşmesi imkansızdır.
Moderatörlerin bu diyaloğu ve ilgili tüm mesajları "MQL4'te pencere nasıl oluşturulur" gibi ayrı bir konuya taşımaları rica olunur, böylece başkaları da aynı hatayı yapmaz ve bir arama motorunda bulabilir.
Belki birisi komisyoncunun tüccarın bilgisayarının ip adresini okuduğunu biliyordur. sadece çevrimiçi modda mı yoksa MT4'teki bir klasörden geçmişi de yüklemek teknik olarak mümkün mü?
"Kısayol tuşlarını" uygulamaya karar verdim (Ctrl, Alt, Shift gibi kontrol tuşlarını kullanmadan). Ama kod çalışmıyor.
#property indicator_chart_window#import "user32.dll"bool RegisterHotKey( int hWnd, int id, int fsModifiers, int vk);
bool PeekMessage ( int & lpMsg[ 7 ], int hWnd, int wMsgFilterMin, int wMsgFilterMax, int wRemoveMsg);
bool UnregisterHotKey ( int hWnd, int id);
#importexternstring s0= "идентификатор горячей клавиши" ;
externint id;
externstring s1= "код клавиши (список см. winuser.h)" ;
externint vk;
externstring s2= "номер окна (от нуля до WindowsTotal()-1)" ;
externint aWindowNumber;
bool PM;
int init()
{
ObjectCreate ( "Smile" , OBJ_LABEL ,aWindowNumber, 0 , 0 );
ObjectSet( "Smile" , OBJPROP_XDISTANCE , 0 );
ObjectSet( "Smile" , OBJPROP_YDISTANCE , 0 );
ObjectSetText( "Smile" , StringSetChar( "" , 0 , 75 ), 50 , "WingDings" , Red);
return (RegisterHotKey(WindowHandle( Symbol (), Period ()), id, 0 , vk));
}
int deinit()
{
ObjectDelete ( "Smile" );
WindowRedraw();
return (UnregisterHotKey(WindowHandle( Symbol (), Period ()), id));
}
int start()
{
int lpMsg[ 7 ];
/*
Структура lpMsg для WM_HOTKEY:
0 - хэндл окна// HWND(MSDN)//int(MQL4)
1 - WM_HOTKEY (0x0312)// UINT(MSDN)//int(MQL4) 2 - заданный id// WPARAM(MSDN)//int(MQL4) 3 - млардшее слово - ноль (модификатор, - не задаём), старшее - код виртуальной клавиши// LPARAM(MSDN)//int(MQL4) 4 - время// DWORD(MSDN)//int(MQL4) 5 - координата х мышки//структура POINT. LONG(MSDN)//int(MQL4) 6- координата у мышки// LONG(MSDN)//int(MQL4)
*/
PM=PeekMessage(lpMsg, WindowHandle( Symbol (), Period ()), 0 , 0 , 1 ); //1 = PM_REMOVEif (lpMsg[ 1 ]== 0x0312 ){
if (lpMsg[ 2 ]==id){
switch (StringGetChar(ObjectDescription( "Smile" ), 0 )){
case74 : ObjectSetText( "Smile" , StringSetChar( "" , 0 , 75 ), 50 , "WingDings" , Red);
case75 : ObjectSetText( "Smile" , StringSetChar( "" , 0 , 74 ), 50 , "WingDings" , Red);
}
}
}
return ( 0 );
}
Neden çalışmıyor olabilir? Teoride, gülen surat değişmelidir. 81'i (anahtar kodu Q) ayarladım, ancak orada herhangi bir şeyi ayarlayabilirsiniz. İşte anahtar kodlar:
123456784950515253545556
Q W E R T Y U I
8187698284898573
A S D F G H J K
6583687071727475
Z X C V B N M ,
90886786667877188
Eklendi : PeekMessage çağrılamıyor - sistem hatası 127 "Belirtilen prosedür bulunamadı". RegisterHotKey 1 (true) değerini döndürür. PeekMessage'dan sonra NativeAPI ile RtlGetLastWin32Error()'u aramaya çalıştım, bu yüzden yürütme ona bile ulaşmıyor. Ve belirtin
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Zarar durdurunca kapatılmalıdır. Forex ticareti 00:00 GMT'de açılır.
Ancak StopLoss fiyatından değil, StopLoss'tan çok daha düşük olabilen ilk fiyattan kapanacaktır! Ve TakeProfit kesinlikle kapalı. Bu nedenle, zararı durdur ile ayrılmamak daha iyidir ve hafta sonu için pozisyon bırakmamak daha da iyidir!
Özel işlevinizin adresini nasıl öğrenebilirsiniz? Yani, eğer bir listem varsa
peki myFunc adresini nasıl öğrenebilirim? Daha sonra class parametresine iletilecek WndProc adresinin (kullanıcı tanımlı bir fonksiyon ile tanımlıyorum) nasıl bulunacağını anlamak için gereklidir.
Zarar durdurunca kapatılmalıdır. Forex ticareti 00:00 GMT'de açılır.
Gerçek olmaktan çok uzak, ilk alıntıyı kapatabilir. Belgeleri okumak gerekiyor ve DC'ler istedikleri gibi yazıyorlar.
Özel işlevinizin adresini nasıl öğrenebilirsiniz? Yani, eğer bir listem varsa
peki myFunc adresini nasıl öğrenebilirim? Daha sonra class parametresine iletilecek WndProc adresinin (kullanıcı tanımlı bir fonksiyon ile tanımlıyorum) nasıl bulunacağını anlamak için gereklidir.
Adresi olduğunu kim söyledi ki? bu bir MQL4 işlevidir: kelimenin tam anlamıyla derlenmez, ancak programın yürütülmesi sırasında yorumlayıcı aracılığıyla çalıştırılır.
Bir EA neden siparişleri değiştirmiyor?
İşte fonksiyon:
Başlangıçta şöyle sesleniyorum:
Adresi olduğunu kim söyledi ki? bu bir MQL4 işlevidir: kelimenin tam anlamıyla derlenmez, ancak programın yürütülmesi sırasında yorumlayıcı aracılığıyla çalıştırılır.
Köpeğin gömülü olduğu yer orası. O zaman, robot için yalnızca MQL4 + WinAPI çerçevesinde kendi kendine yazılmış dll'ler olmadan bağımsız bir pencere arayüzü seçimi nedeniyle harcanan 2-3 hafta için üzgünüm. Bunu daha önce anlamamış olmam üzücü, kodum ve geliştirmelerim için üzgünüm.
Özetliyoruz. Kodu dll'nize taşımadan örtüşen (yani bir alt değil) pencere oluşturmak imkansızdır, çünkü WNDCLASS (veya WNDCLASSEX) açıklanırken
yapıyı bir int dizisine paketlerken okla gösterilen satırlarda
pencere prosedürünün adresi iletilir, yani. bu pencere için fare ve klavye işleyicisi. MQL4'te bir pencere prosedürü, kullanıcı tanımlı bir işlev olarak uygulanabilir, ancak adresi yorumlayıcı içinde alınamaz, dolayısıyla aktarılacak hiçbir şey yoktur. MQL4'te mümkün olan maksimum standart pencere sınıflarını kullanmaktır, ancak bunlar yalnızca alt pencereler olarak kullanımlarını ima eder. Basit bir ifadeyle, gösterge tarafından oluşturulan böyle bir pencere fare ile tutulamaz ve terminalin dışına taşınamaz (çünkü bu bir alt pencere olacaktır), örtüşen bir pencere ise terminalin dışına taşınabilir. Standart pencere sınıflarındaki alt pencereler, herhangi birinin ihtiyacı varsa, mt4gui.dll'de zaten uygulanmaktadır. Ancak fare ve klavye işleyicisi ile örtüşmesi imkansızdır.
Moderatörlerin bu diyaloğu ve ilgili tüm mesajları "MQL4'te pencere nasıl oluşturulur" gibi ayrı bir konuya taşımaları rica olunur, böylece başkaları da aynı hatayı yapmaz ve bir arama motorunda bulabilir.
Tünaydın!
Belki birisi komisyoncunun tüccarın bilgisayarının ip adresini okuduğunu biliyordur. sadece çevrimiçi modda mı yoksa MT4'teki bir klasörden geçmişi de yüklemek teknik olarak mümkün mü?
"Kısayol tuşlarını" uygulamaya karar verdim (Ctrl, Alt, Shift gibi kontrol tuşlarını kullanmadan). Ama kod çalışmıyor.
Neden çalışmıyor olabilir? Teoride, gülen surat değişmelidir. 81'i (anahtar kodu Q) ayarladım, ancak orada herhangi bir şeyi ayarlayabilirsiniz. İşte anahtar kodlar:
Eklendi : PeekMessage çağrılamıyor - sistem hatası 127 "Belirtilen prosedür bulunamadı". RegisterHotKey 1 (true) değerini döndürür. PeekMessage'dan sonra NativeAPI ile RtlGetLastWin32Error()'u aramaya çalıştım, bu yüzden yürütme ona bile ulaşmıyor. Ve belirtin
- bir derleme hatası oluşur .