コーディングのヘルプ - ページ 246

 
macerina:
Mladenさん、ありがとうございます!...これは、あなたが前のロジックで説明したように、二重のMacd比較と50クロスオーバーを持っていますか。 事前にありがとうございます。

マセリナ

メタトレーダー版ではセカンダリーシグナルが50ラインのrsiのクロスであるのに対し、アスペングラ版ではセカンダリーエントリーのシグナルはrsiとそのシグナル ラインのクロスであるという違いです。Macdの部分も同じです(クローズドバーのシグナルを取る必要があります。)

 

mladenの情報をありがとうございます...それは50ラインクロスと信号線の クロスを選択するための同じ指標のオプションを設定することは可能ですか...

ありがとうございました。

 
mladen:
sulaimoney この手順ですべてOKです。この2つのプロシージャーのコールを次々に実行すると、すべてOKであることを示す簡単なインジケータを添付します。エラーはこの2つのプロシージャではないので、残りのコードを確認してください。

こんにちは、Mladen

私はコードをチェック し、いくつかのエラーを見つけたので、それを修正しました。

今、私は以下の値を使おうとしています。

double lastorderprice = 0;

そして

int bscount = 0;

グローバルスコープの変数としてeaから呼び出すことができるように、例えば、 void NewOrder()

// OnEveryTick

void LastBuySellOrder() // 最後の注文(買い/売り)を選択するためにすべてのオープンオーダーをループする OnEveryTick

{

double lastorderprice = 0;

datetime lastTime = 0;

datetime closeTime = 0;

int lastTicket = -1; // どれも開いていない。

for (int i=OrdersTotal()-1; i >= 0; i--)

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId)

&&( OrderType() == OP_BUY || OrderType() == OP_SELL )

&& OrderOpenTime() >= lastTime && OrderCloseTime() == closeTime

&& OrderTicket() > lastTicket )

{

lastTime = OrderOpenTime();

lastorderprice = OrderOpenPrice();

closeTime = OrderCloseTime();

lastTicket = OrderTicket();

}

return(lastTicket)。

さもなくば

Print("OrderSelect() error - ", ErrorDescription(GetLastError()));

}

void PendingStopOrderCount()

{

int bscount = 0;

for (int i=OrdersTotal()-1; i >= 0; i--)

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == OrderId)

if (オーダータイプ() == OP_BUYSTOP )

{

bscount++;

}

}

さもなくば

{

Print("OrderSend() error - ", ErrorDescription(GetLastError())).Print("OrderSend() error - ", ErrorDescription(GetLastError()).Print");

}

}

// OpBuy または OpSell が存在する場合

void NewOrder()

{

if (bscount==0)

{

BuyStopPending();

}

}

 

HI

このインジケータはリペイントですか?もしそうなら、いつ、どれだけのバーが戻ってくるのでしょうか?

xps_v8_oscillator.ex4xps_v8_oscillator.mq4

ファイル:
 
toldmikl:
HI

このインジケータはリペイントですか?もしそうなら、いつ、どれだけのバーが戻ってくるのでしょうか?

xps_v8_oscillator.ex4xps_v8_oscillator.mq4
これは、時間枠に応じて自動的に周期が設定される太陽風インジケーターです。

1分足:期間=2880

5分足:期間=576

15分足:期間=192

30分:期間=96

1時間以上:期間=48

 

OKですが、私はオフラインのチャートM2でこれを使用しています :S だから、通常のタイムフレームではありません。

 
toldmikl:
しかし、私はオフラインのチャートM2 :Sでこれを使用しているので、それは通常のタイムフレームではありません。

それを試してみて、あなた自身のために表示されます(強制的にすべてのバーから指標を更新するautorefreshのようなものを使用するか、単に、十分な新しいバーが構築されたときに、パラメータに 移動し、何も変更せず、OKをクリックします)。トレンドが変化したときにそれが何をするか、期間に注意を払う。

私は間違ったインド太陽風のコードが何であるかを説明し、誰を説得しようとしているよりも良い

 

ピリオドを変更できないのですが、ソースコードだけ見ることができます。

#プロパティ indicator_separate_window

#property indicator_minimum 0

#property indicator_maximum 1 (インジケーター最大値1)

#property indicator_buffers 3 (インジケーターバッファー3)

#property indicator_color2 C'72,49,255' (インジケータカラー2)

#property indicator_color3 C'255,49,72' (インジケータカラー3)

#property indicator_width2 6

#プロパティ indicator_width3 6

int period;

extern bool alarm=false;

double ExtBuffer0[];

double ExtBuffer1[];

double ExtBuffer2[];

double alertBar;

double last;

int init() {

//-----------------------------

switch ( ピリオド() )

{

case 1: ピリオド = 2880;break;

case 5: ピリオド = 576;break;

ケース15:ピリオド=192;break;

ケース30:ピリオド=96;break。

ケース60:ピリオド=48;break。

ケース240:ピリオド=48;break。

ケース1440:ピリオド=48;break。

ケース10080: ピリオド = 48;break;

デフォルト:期間=48;break;

}

//-----------------------------

SetIndexStyle(0,DRAW_NONE)を設定します。

SetIndexStyle(1,DRAW_HISTOGRAM)を設定します。

SetIndexStyle(2,DRAW_HISTOGRAM)を設定します。

表示桁数(Digits+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1)。

SetIndexBuffer(2,ExtBuffer2)。

IndicatorShortName("");// X :-)");

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL).SetIndexLabel(1,NULL)です。

SetIndexLabel(2, NULL)を設定します。

return(0);

}

int deinit()

{

//----

ObjectDelete("XPS")。

ObjectDelete("XPS2")。

ObjectDelete("XPS3")。

//----

return(0);

}

int start() {

int limit;

int counted_bars=IndicatorCounted();

double prev,current,old;

double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;

double 価格

double MinL=0;

double MaxH=0。

if(counted_bars>0) counted_bars--;

limit=Bars-counted_barsです。

for(int i=0; i<limit; i++)

{ MaxH = High;

MinL = Low[Lowest(NULL,0,MODE_LOW,期間,i)];

価格 = (High+Low)/2;

Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1.Value = 0.33*2*((MaxH-MinL)-0.5) + 0.67*Value1;

Value=MathMax(Value,-0.999),0.999);

ExtBuffer0=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1; Value=Value(0.5)+0.67*Value1。

Value1=Value。

Fish1=ExtBuffer0。

}

bool up = TRUE;

for(i=limit-2; i>=0; i--)

{

current=ExtBuffer0;

prev=ExtBuffer0;

if (((current0))||(current<0)) up=false;

if (((current>0)&&(prev0)) up=true;

if(!up) {

ExtBuffer2=1;

ExtBuffer1=0;

if (alarm && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC...Possible Trend going DOWN on ",Period()," ",Symbol()");

alertBar = Bars;last = 2;

}

}

else {

ExtBuffer1=1;

ExtBuffer2=0;

if (アラーム && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

アラート("OSC...Possible Trend going UP on ",Period()," ",Symbol()");

alertBar = Bars;

last = 1;

}

}

}/ループの終了

ObjectDelete("XPS");

ObjectCreate("XPS",OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46'); ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46);

ObjectSet("XPS", OBJPROP_CORNER, 2); ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0); ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2");

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0); ObjectSetText("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver); ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver);

ObjectSet("XPS2", OBJPROP_CORNER, 2); ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0); ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10); ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3");

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0); ObjectSetText("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2).ObjectSet("XPS3", "OBJPROP_CORNER")。

ObjectSet("XPS3", OBJPROP_BACK, 0); ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7).OBJPROP_XDISTANCE("XPS3")。

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

return(0);

それで?

 
toldmikl:
周期を変更できないのですが、ソースコードはこちらで見ることができます。

#property indicator_separate_window

#property indicator_minimum 0

#property indicator_maximum 1 (インジケーター最大値1)

#property indicator_buffers 3 (インジケーターバッファー3)

#property indicator_color2 C'72,49,255' (インジケーターカラー2)

#property indicator_color3 C'255,49,72' (インジケータカラー3)

#property indicator_width2 6

#プロパティ indicator_width3 6

int period;

extern bool alarm=false;

double ExtBuffer0[];

double ExtBuffer1[];

double ExtBuffer2[];

double alertBar;

double last;

int init() {

//-----------------------------

switch ( ピリオド() )

{

case 1: ピリオド = 2880;break;

case 5: ピリオド = 576;break;

ケース15:ピリオド=192;break;

ケース30:ピリオド=96;break。

ケース60:ピリオド=48;break。

ケース240:ピリオド=48;break。

ケース1440:ピリオド=48;break。

ケース10080: ピリオド = 48;break;

デフォルト:期間=48;break;

}

//-----------------------------

SetIndexStyle(0,DRAW_NONE)を設定します。

SetIndexStyle(1,DRAW_HISTOGRAM)を設定します。

SetIndexStyle(2,DRAW_HISTOGRAM)を設定します。

表示桁数(Digits+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1)。

SetIndexBuffer(2,ExtBuffer2)。

IndicatorShortName("");// X :-)");

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL).SetIndexLabel(1,NULL)です。

SetIndexLabel(2, NULL)を設定します。

return(0);

}

int deinit()

{

//----

ObjectDelete("XPS")。

ObjectDelete("XPS2")。

ObjectDelete("XPS3")。

//----

return(0);

}

int start() {

int limit;

int counted_bars=IndicatorCounted();

double prev,current,old;

double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;

double 価格

double MinL=0;

double MaxH=0。

if(counted_bars>0) counted_bars--;

limit=Bars-counted_barsです。

for(int i=0; i<limit; i++)

{ MaxH = High;

MinL = Low[Lowest(NULL,0,MODE_LOW,期間,i)];

価格 = (High+Low)/2;

Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1.Value = 0.33*2*((MaxH-MinL)-0.5) + 0.67*Value1;

Value=MathMax(Value,-0.999),0.999);

ExtBuffer0=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1; Value=Value(0.5)+0.67*Value1。

Value1=Value。

Fish1=ExtBuffer0。

}

bool up = TRUE;

for(i=limit-2; i>=0; i--)

{

current=ExtBuffer0;

prev=ExtBuffer0;

if (((current0))||(current<0)) up=false;

if (((current>0)&&(prev0)) up=true;

if(!up) {

ExtBuffer2=1;

ExtBuffer1=0;

if (alarm && i==0 && last != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC...Possible Trend going DOWN on ",Period()," ",Symbol()");

alertBar = Bars;last = 2;

}

}

else {

ExtBuffer1=1;

ExtBuffer2=0;

if (アラーム && i==0 && last != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

アラート("OSC...Possible Trend going UP on ",Period()," ",Symbol()");

alertBar = Bars;

last = 1;

}

}

}/ループの終了

ObjectDelete("XPS");

ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46'); ObjectSetText("XPS","!XPS v8", 28, "Arial Black", C'46,46,46);

ObjectSet("XPS", OBJPROP_CORNER, 2); ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0); ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2");

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0); ObjectSetText("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver); ObjectSetText("XPS2","!XPS v8", 28, "Arial Black", Silver);

ObjectSet("XPS2", OBJPROP_CORNER, 2); ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0); ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10); ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3");

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0); ObjectSetText("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3", "Trade like a BOSS", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2).ObjectSet("XPS3", "OBJPROP_CORNER")。

ObjectSet("XPS3", OBJPROP_BACK, 0); ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7).OBJPROP_XDISTANCE("XPS3")。

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

return(0);

それで?

標準の時間枠でない時間枠(オフラインの「2分」チャートなど)に対してピリオド48を適用している

計算周期を変更できる太陽風のバージョンについては、こちらのスレッドをご参照ください :https://www.mql5.com/en/forum/179650

 

このスクリプトを編集して、注文、ロットサイズ、買い/売りのみを残すのを手伝ってください。すでにテイクプロフィットやストップ ロスを自動で行うEAを所有しており、このインディと競合しています。

このスクリプトはMENUで指定した数の成行注文を自動的に一度に開くのですが、現在は5つの注文を入力しても1つの注文しか開きません。このエラーを修正し、SCRIPTから利食い/損切りを完全に削除するのを手伝ってください。

祝福を

ファイル: