//+------------------------------------------------------------------+//| _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);
}
//+------------------------------------------------------------------+
//| 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]);
}
私は毎日このコミュニティで、より多くの表現や否定的な意見に出会いますが、誰も反応しません。
ともあれ、これで一件落着です。
独自のキーボードとキーボード コントロール(CHART_MOUSE_SCROLL、CHART_KEYBOARD_CONTROL ...)を作成したい場合は、これを無効にする必要があります。
しかし、それは無理な話です。
しかし,そのようなインタフェースは,非同期関数を使用することができないので,BEの速度が基本的なものよりも大幅に高くなります。 非常に妨げられるChartGetInteger
ニコライさん、今回もありがとうございました。CanvasBar.mq5をmt4に変換して、幅や色などの入力オプションを追加してみたのですが......。(例えば「ninjatraderのローソク足風をシミュレートする」といった使い方ができます。)
こんにちは!iEnvelopes 標準のインジケーターを持って います。
思うように動作させることができない!
すなわち、ろうそくが触れたり、アップ、その後オープン買い、ろうそくが触れたり、ダウン、その後オープン売り、現在のキャンドルにラインを交差させたときに必要な......とそれは(信号ヒットとすべて、別の信号ヒットとすべて絶えず)一度だけ起こった! このような、このような、このような、このような、このような......と、このような、このような......。
助けてください!
こんにちは!標準のインジケーターiEnvelopesが ありますよ。
思い通りに動作させることができない!
すなわち、ろうそくが触れたり、アップ、その後オープン買い、ろうそくが触れたり、ダウン、その後オープン売り、現在のキャンドルにラインを交差させたときに必要な......とそれは(信号ヒットとすべて、別の信号ヒットとすべて常に)一度だけ起こった! このような、より良い、より良い、より良い、より良い、より良い......そして、より良い、より良い......。
助けてください!
コードにプロセス理解を追加する必要がある :-)
ローソク足が閉じていない限り、High[0]は上がるだけ、Low[0]は下がるだけで、分解されたエンベロープは思い通りに振る舞います :-)
エンベロープがOpen価格から取られていない場合、unclosed barを見ることはできません。
コードにプロセス理解を追加する必要があります :-)
キャンドルが閉じるまで、High[0]は上がるだけ、Low[0]は下がるだけで、デコンパイルによるエンベロープは思い通りに動きます :-)
エンベロープがOpen priceから取られていない場合、unclosed barを見ることができない。
配列のMAを計算する方法を教えてください。
私はオープン・クローズでMAを構築していますが、グラフを見ると右から左へ計算しているように見えますね。
iMAOnArrayとSimpleMAOnBufferをツールとして使用しましたが、もっと良い方法はありますか?
こんにちは!!!私はコメント内のリンクを翻訳するためにこのコードを使用しますが、体系的に一日に一度、それは私にエラーを与える:Webエラー5203(ERR_WEBREQUEST_REQUEST_FAILED。 HTTPリクエストの結果でエラー)。
何か解決する方法はありますか?
信号の重み付け係数の作り方を教えてください。
例えば、クロスオーバー、比較1(前のバーと前のバー)、比較2(前のバーと高いTFの前のバー)の3つのシグナルをスケール別に持っています。
MTのMAKDビルドでやろうとするのですが、案件が開けません。ログには何も書かれていない。つまり、標準的なEAの基本には手を加えず、ポジションオープンのロジックを変更しただけです。つまり、三重奏はMT MAKD-advisor(ノーマル)の基礎となるものです
ヌビアンコードの悪口はやめてくれ、私はプログラマーじゃないんだ
...
Вводимые параметры
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)
こんにちは!この機能を正しく実装するにはどうしたらよいでしょうか(私のやりたいことは理解していただけると思います)?
こんにちは。winApi user32.dllのヘルプが必要です。
プロフィールにChartが1つあります。あと2つChatrを開くスクリプトが必要です。3つのチャート(1つあったものをさらに2つ開いたもの)がすべて、決められた場所に決められたサイズを行うこと。
どうあがいてもダメなんです。
このスクリプトは、私が投げるChartのサイズと位置を変更するものです。