Kendi klavye ve klavye kontrollerinizi (CHART_MOUSE_SCROLL, CHART_KEYBOARD_CONTROL ...) oluşturmak istiyorsanız, devre dışı bırakmanız gerekir. Ama bu mümkün değil. Ancak böyle bir arayüzün BE'nin hızı, temel olanınkinden önemli ölçüde daha yüksektir, çünkü BT zaman uyumsuz işlevleri kullanmak mümkün değildir.
Tekrar teşekkürler, Nikolay. CanvasBar.mq5 dosyanızı mt4'e dönüştürmeyi denedim, genişlikler/renkler/... ile ilgili bazı giriş seçenekleri ekledim (böylece örneğin "ninjatrader mum stilini taklit etmek için" kullanılabilir)
Merhaba! standart bir iEnvelopes göstergesi var! İstediğim gibi çalışmasını sağlayamıyorum! Yani, mum mevcut YUKARI mumdaki çizgiye dokunduğunda veya geçtiğinde, ALIŞ açılır ve mum mevcut AŞAĞI mumdaki çizgiye dokunur veya geçer, ardından SATIŞ açılır ..... ve bu bir kez olur. (sinyal çalıştı ve diğer her şey sinyal çalıştı ve her şey kalıcı)!
Merhaba! standart bir iEnvelopes göstergesi var! İstediğim gibi çalışmasını sağlayamıyorum! Yani, mum mevcut YUKARI mumdaki çizgiye dokunduğunda veya geçtiğinde, ALIŞ açılır ve mum mevcut AŞAĞI mumdaki çizgiye dokunur veya geçer, ardından SATIŞ açılır ..... ve bu bir kez olur. (sinyal çalıştı ve diğer her şey sinyal çalıştı ve her şey kalıcı)!
Lütfen yardım edin!
koda süreçle ilgili bir anlayış eklemeniz gerekir :-)
mum kapanana kadar, Yüksek[0] yalnızca büyüyebilir, Düşük[0] yalnızca azalabilir ve derlenmiş zarflar istedikleri gibi davranır :-)
Zarflar Açık fiyatlardan alınmadıysa, kapatılmamış bir bara bakamazsınız.
Bir dizide MA'yı nasıl hesaplayacağımı bulmama yardım et.
MA'yı aç-kapa ile yapıyorum, ancak grafiğe bakılırsa sağdan sola hesaplanmış gibi görünüyor.
Araç olarak iMAOnArray veSimpleMAOnBuffer kullandım, daha iyi bir seçenek var mı?
//+------------------------------------------------------------------+//| _null.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#property strict#property indicator_separate_window#include <MovingAverages.mqh>
#property indicator_buffers4#property indicator_plots2//--- plot OC#property indicator_label1"OC"#property indicator_type1DRAW_COLOR_HISTOGRAM#property indicator_color1clrSteelBlue , clrRed , clrGreen#property indicator_style1STYLE_SOLID#property indicator_width11#property indicator_label2"MA1"#property indicator_type2DRAW_LINE#property indicator_color2clrBrown#property indicator_style2STYLE_SOLID#property indicator_width21//--- indicator buffersdouble OC[], OC_color[], MA1_buf[];
inputint MA1= 2 ;
intOnInit ()
{
IndicatorSetString ( INDICATOR_SHORTNAME , "t1" );
SetIndexBuffer ( 0 ,OC, INDICATOR_DATA );
SetIndexBuffer ( 1 ,OC_color, INDICATOR_COLOR_INDEX );
SetIndexBuffer ( 2 , MA1_buf, INDICATOR_DATA );
//PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,50);//--- indicator buffers mapping//---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//--- Проверка количества доступных баров (1 - минимально, 4 - оптимально для большинства расчётов. Но всё "по месту"...)if (rates_total< 4 ) return0 ;
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated; // 0 - пришел новый тик, новый бар формироваться не начал. 1 - пришел новый тик и начал формироваться новый бар.//if(limit>1) // если вписать "limit>0", то на нулевом баре будет расчёт только нулевого бара, на каждом новом баре будет полный перерасчёт всей истории// если вписать "limit>1", то на нулевом баре будет расчёт только нулевого бара, на открытии нового бара - пересчёт первого и нулевого,// при подгрузке истории и на первом запуске - перерасчёт всей истории
{
limit=rates_total- 1 ;
// здесь должна быть инициализация всех используемых буферов индикатора необходимыми значениями (обычно EMPTY_VALUE и 0)
}
for ( int i=limit; i>= 0 && ! IsStopped (); i--)
{
// необходимые действия по расчёту индикатора
OC[i]= fmax (open[i],close[i])- fmin (open[i],close[i]);
if (OC[i]> 0.001 )
{ OC_color[i]= 1 ;
}
}
/* for(int k=limit; k>=0 && !IsStopped(); k--)
{
MA1_buf[k]=iMAOnArray(OC,0,MA1,k,MODE_SMA,0);
}
*/
SimpleMAOnBuffer(rates_total,prev_calculated, 0 ,MA1,OC,MA1_buf);
//--- return value of prev_calculated for next callreturn (rates_total);
}
Merhaba!!! Bir bağlantıyı yoruma çevirmek için bu kodu kullanıyorum, ancak sistematik olarak günde bir kez bana bir hata veriyor: web hatası 5203 (ERR_WEBREQUEST_REQUEST_FAILED. Bir HTTP isteği sonucunda bir hata oluştu)
Lütfen bana sinyaller için ağırlık katsayılarının nasıl yapıldığını söyler misiniz?
Örneğin, daireler için üç sinyalim var: geçiş, karşılaştırma1 (önceki ile uçan çubuk) ve karşılaştırma 2 (eski TF'de önceki çubuk ve önceki çubuk).
MT'ye entegre MACD danışmanı örneğini kullanarak bunu çözmeye çalışıyorum, ancak danışman ticaret açmıyor. Dergi boş. Yani standart Expert Advisor'ın temeline dokunulmamış, sadece anlaşma açma mantığı değiştirilmiştir. Bu nedenle, üç nokta, MT-shny MACD-EA'nın (normal) temelidir.
Sadece noob kodu için yemin etmeyin, ben programcı değilim
Merhaba. winApi user32.dll ile ilgili yardıma ihtiyacınız var.
Profilde bir Grafik var. İki Sohbetçi daha açmak için bir komut dosyasına ihtiyacımız var. Belirtilen yerde belirtilen boyutu yapmak için her üç Grafik (bir ve iki tane daha açıldı).
Ne kadar denersem deneyeyim, hepsi aynı.
Bu komut dosyası, üzerine attığım Grafiğin boyutunu ve konumunu değiştirir.
//+------------------------------------------------------------------+
//| posicion.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property script_show_inputs
#import "user32.dll"
int SetWindowPos(int hWnd,int hWndInsertAfter,int X,int Y,int cx,int cy,int uFlags);
int GetParent(int hWnd);
int GetTopWindow(int hWnd);
int GetWindow(int hWnd,int wCmd);
int GetWindowDC(int h);
int ShowWindow(int hWnd,int nCmdShow);
#import
#define GW_HWNDNEXT 0x0002
#define SWP_NOSIZE 0x0001
#define SWP_NOMOVE 0x0002
#define SWP_NOZORDER 0x0004
#define SW_RESTORE 9
#define SWP_FRAMECHANGED 0x0020
int gr2x1_P1 [] = {PERIOD_H4,PERIOD_D1,PERIOD_W1}; // Period of grafic 1 of 2x1
int CXShift2x1[] = {0,0,1040}; // Horizontal shift of grafic 1 of 2x1
int CYShift2x1[] = {0,268,0}; // Vertical shift of grafic 1 of 2x1
int CXSize2x1 [] = {1040,1040,880}; // Width of grafic 1 of 2x1
int CYSize2x1 [] = {500,500,1000}; // Height of grafic 1 of 2x1
input int xy = 0;//xy 0-2
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
int i,handle;
int parent;
handle=(int)ChartGetInteger(0,CHART_WINDOW_HANDLE);Print("ChartGetInteger(0,CHART_WINDOW_HANDLE) ",handle); //возвращает дескриптор 2688738
parent=GetParent(handle);Print("parent_0 ",parent); //возвращает дескриптор 197188
ShowWindow(parent,SW_RESTORE);
i=xy;
SetWindowPos(parent,0,CXShift2x1[i],CYShift2x1[i],CXSize2x1[i],CYSize2x1[i],0);
//Sleep(5000);
}
//+------------------------------------------------------------------+
Открыть Новые дополнительные Chart-ы
Но как дальше изменить размер дополнительных Chart-ов, ни как не получается.
int i;
for (i= 0 ; i< 3 ; i++)
{
long h= ChartOpen ( "EURUSD" ,gr2x1_P1[i]);
}
Bu toplumda her gün çok daha fazla ifade ve olumsuzluk görüyorum ve kimse tepki vermiyor.
Pekala, tamam, soru bitti.
Kendi klavye ve klavye kontrollerinizi (CHART_MOUSE_SCROLL, CHART_KEYBOARD_CONTROL ...) oluşturmak istiyorsanız, devre dışı bırakmanız gerekir.
Ama bu mümkün değil.
Ancak böyle bir arayüzün BE'nin hızı, temel olanınkinden önemli ölçüde daha yüksektir, çünkü BT zaman uyumsuz işlevleri kullanmak mümkün değildir.
Tekrar teşekkürler, Nikolay. CanvasBar.mq5 dosyanızı mt4'e dönüştürmeyi denedim, genişlikler/renkler/... ile ilgili bazı giriş seçenekleri ekledim (böylece örneğin "ninjatrader mum stilini taklit etmek için" kullanılabilir)
Merhaba! standart bir iEnvelopes göstergesi var!
İstediğim gibi çalışmasını sağlayamıyorum!
Yani, mum mevcut YUKARI mumdaki çizgiye dokunduğunda veya geçtiğinde, ALIŞ açılır ve mum mevcut AŞAĞI mumdaki çizgiye dokunur veya geçer, ardından SATIŞ açılır ..... ve bu bir kez olur. (sinyal çalıştı ve diğer her şey sinyal çalıştı ve her şey kalıcı)!
Lütfen yardım edin!
Merhaba! standart bir iEnvelopes göstergesi var!
İstediğim gibi çalışmasını sağlayamıyorum!
Yani, mum mevcut YUKARI mumdaki çizgiye dokunduğunda veya geçtiğinde, ALIŞ açılır ve mum mevcut AŞAĞI mumdaki çizgiye dokunur veya geçer, ardından SATIŞ açılır ..... ve bu bir kez olur. (sinyal çalıştı ve diğer her şey sinyal çalıştı ve her şey kalıcı)!
Lütfen yardım edin!
koda süreçle ilgili bir anlayış eklemeniz gerekir :-)
mum kapanana kadar, Yüksek[0] yalnızca büyüyebilir, Düşük[0] yalnızca azalabilir ve derlenmiş zarflar istedikleri gibi davranır :-)
Zarflar Açık fiyatlardan alınmadıysa, kapatılmamış bir bara bakamazsınız.
koda süreçle ilgili bir anlayış eklemeniz gerekir :-)
Mum kapanana kadar, Yüksek[0] yalnızca büyüyebilir, Düşük[0] yalnızca azalabilir ve derlenmiş zarflar istedikleri gibi davranır :-)
Zarflar Açık fiyatlardan alınmadıysa, kapatılmamış bir bara bakamazsınız.
Bir dizide MA'yı nasıl hesaplayacağımı bulmama yardım et.
MA'yı aç-kapa ile yapıyorum, ancak grafiğe bakılırsa sağdan sola hesaplanmış gibi görünüyor.
Araç olarak iMAOnArray ve SimpleMAOnBuffer kullandım, daha iyi bir seçenek var mı?
Merhaba!!! Bir bağlantıyı yoruma çevirmek için bu kodu kullanıyorum, ancak sistematik olarak günde bir kez bana bir hata veriyor: web hatası 5203 (ERR_WEBREQUEST_REQUEST_FAILED. Bir HTTP isteği sonucunda bir hata oluştu)
Bir iş parçacığı bunu düzeltebilir mi?
Lütfen bana sinyaller için ağırlık katsayılarının nasıl yapıldığını söyler misiniz?
Örneğin, daireler için üç sinyalim var: geçiş, karşılaştırma1 (önceki ile uçan çubuk) ve karşılaştırma 2 (eski TF'de önceki çubuk ve önceki çubuk).
MT'ye entegre MACD danışmanı örneğini kullanarak bunu çözmeye çalışıyorum, ancak danışman ticaret açmıyor. Dergi boş. Yani standart Expert Advisor'ın temeline dokunulmamış, sadece anlaşma açma mantığı değiştirilmiştir. Bu nedenle, üç nokta, MT-shny MACD-EA'nın (normal) temelidir.
Sadece noob kodu için yemin etmeyin, ben programcı değilim
...
Вводимые параметры
input double TradeLevel_BUY = 1;
input double TradeLevel_SELL = -1;
input double w_S_MA_1 = 1;
input double w_S_MA_2 = 1;
input double w_S_MA_3 = 1;
input double w_S_MA_4 = 1;
input double w_S_MA_5 = 1;
input double w_S_MA_6 = 1;
...
----------------
...
void OnTick(void)
{
double MA_Fast_1,
MA_Fast_2,
MA_Slow_1,
MA_Slow_2,
MA_Fast_LargeTF_1,
MA_Fast_LargeTF_2,
MA_Slow_LargeTF_1,
MA_Slow_LargeTF_2;
double S_MA_1,
S_MA_2,
S_MA_3,
...
MA_Slow_LargeTF_2=iMA(NULL,0,MA_Slow_LargeTF_2_Period,MA_Slow_LargeTF_2_Shift,MODE_EMA,PRICE_CLOSE,2);
...
double Sum;
if (MA_Fast_1>MA_Slow_1)
{
S_MA_1=1*w_S_MA_1;
}
else
{
S_MA_1=0;
}
return;
if (MA_Fast_1>MA_Fast_2)
{
S_MA_2=1*w_S_MA_2;
}
else
{
S_MA_2=0;
}
return;
if (Open[1]<MA_Fast_LargeTF_1 && Close[1]>MA_Fast_LargeTF_1 || Open[1]>MA_Fast_LargeTF_1 && Close[1]>MA_Fast_LargeTF_1)
{
S_MA_3=1*w_S_MA_3;
}
else
{
S_MA_3=0;
}
return;
...
if (MA_Fast_1<MA_Slow_1)
{
S_MA_4=-1*w_S_MA_4;
}
else
{
S_MA_4=0;
}
return;
if (MA_Fast_1<MA_Fast_2)
{
S_MA_5=-1*w_S_MA_5;
}
else
{
S_MA_5=0;
}
return;
if (Open[1]>MA_Fast_LargeTF_1 && Close[1]<MA_Fast_LargeTF_1 || Open[1]<MA_Fast_LargeTF_1 && Close[1]<MA_Fast_LargeTF_1)
{
S_MA_6=-1*w_S_MA_6;
}
else
{
S_MA_6=0;
}
return;
Sum=S_MA_1+S_MA_2+S_MA_3+S_MA_4+S_MA_5+S_MA_6;
...
if(Sum>TradeLevel_BUY)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
...
if(Sum<=TradeLevel_SELL)
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Ask-TP*Point,"Optim",16384,0,Red);
if(ticket>0)
Tünaydın! Böyle bir işlev nasıl doğru bir şekilde uygulanır (sanırım ne yapmak istediğimi anlayacaksınız)?
Merhaba. winApi user32.dll ile ilgili yardıma ihtiyacınız var.
Profilde bir Grafik var. İki Sohbetçi daha açmak için bir komut dosyasına ihtiyacımız var. Belirtilen yerde belirtilen boyutu yapmak için her üç Grafik (bir ve iki tane daha açıldı).
Ne kadar denersem deneyeyim, hepsi aynı.
Bu komut dosyası, üzerine attığım Grafiğin boyutunu ve konumunu değiştirir.
//+------------------------------------------------------------------+ //| posicion.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property script_show_inputs #import "user32.dll" int SetWindowPos(int hWnd,int hWndInsertAfter,int X,int Y,int cx,int cy,int uFlags); int GetParent(int hWnd); int GetTopWindow(int hWnd); int GetWindow(int hWnd,int wCmd); int GetWindowDC(int h); int ShowWindow(int hWnd,int nCmdShow); #import #define GW_HWNDNEXT 0x0002 #define SWP_NOSIZE 0x0001 #define SWP_NOMOVE 0x0002 #define SWP_NOZORDER 0x0004 #define SW_RESTORE 9 #define SWP_FRAMECHANGED 0x0020 int gr2x1_P1 [] = {PERIOD_H4,PERIOD_D1,PERIOD_W1}; // Period of grafic 1 of 2x1 int CXShift2x1[] = {0,0,1040}; // Horizontal shift of grafic 1 of 2x1 int CYShift2x1[] = {0,268,0}; // Vertical shift of grafic 1 of 2x1 int CXSize2x1 [] = {1040,1040,880}; // Width of grafic 1 of 2x1 int CYSize2x1 [] = {500,500,1000}; // Height of grafic 1 of 2x1 input int xy = 0;//xy 0-2 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int i,handle; int parent; handle=(int)ChartGetInteger(0,CHART_WINDOW_HANDLE);Print("ChartGetInteger(0,CHART_WINDOW_HANDLE) ",handle); //возвращает дескриптор 2688738 parent=GetParent(handle);Print("parent_0 ",parent); //возвращает дескриптор 197188 ShowWindow(parent,SW_RESTORE); i=xy; SetWindowPos(parent,0,CXShift2x1[i],CYShift2x1[i],CXSize2x1[i],CYSize2x1[i],0); //Sleep(5000); } //+------------------------------------------------------------------+ Открыть Новые дополнительные Chart-ы Но как дальше изменить размер дополнительных Chart-ов, ни как не получается.