コーディングのヘルプ - ページ 246 1...239240241242243244245246247248249250251252253...786 新しいコメント Mladen Rakic 2014.03.17 22:18 #2451 macerina: Mladenさん、ありがとうございます!...これは、あなたが前のロジックで説明したように、二重のMacd比較と50クロスオーバーを持っていますか。 事前にありがとうございます。 マセリナ メタトレーダー版ではセカンダリーシグナルが50ラインのrsiのクロスであるのに対し、アスペングラ版ではセカンダリーエントリーのシグナルはrsiとそのシグナル ラインのクロスであるという違いです。Macdの部分も同じです(クローズドバーのシグナルを取る必要があります。) macerina 2014.03.17 23:45 #2452 mladenの情報をありがとうございます...それは50ラインクロスと信号線の クロスを選択するための同じ指標のオプションを設定することは可能ですか... ありがとうございました。 SuLaimon 2014.03.18 12:29 #2453 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(); } } Coding help 初心者の方からの質問 MQL5 MT5 MetaTrader KimIVの便利な機能 削除済み 2014.03.18 12:32 #2454 HI このインジケータはリペイントですか?もしそうなら、いつ、どれだけのバーが戻ってくるのでしょうか? xps_v8_oscillator.ex4xps_v8_oscillator.mq4。 ファイル: xps_v8_oscillator.ex4 6 kb xps_v8_oscillator.mq4 11 kb Mladen Rakic 2014.03.18 12:39 #2455 toldmikl: HIこのインジケータはリペイントですか?もしそうなら、いつ、どれだけのバーが戻ってくるのでしょうか? xps_v8_oscillator.ex4xps_v8_oscillator.mq4 これは、時間枠に応じて自動的に周期が設定される太陽風インジケーターです。 1分足:期間=2880 5分足:期間=576 15分足:期間=192 30分:期間=96 1時間以上:期間=48 削除済み 2014.03.18 13:22 #2456 OKですが、私はオフラインのチャートM2でこれを使用しています :S だから、通常のタイムフレームではありません。 Mladen Rakic 2014.03.18 13:28 #2457 toldmikl: しかし、私はオフラインのチャートM2 :Sでこれを使用しているので、それは通常のタイムフレームではありません。 それを試してみて、あなた自身のために表示されます(強制的にすべてのバーから指標を更新するautorefreshのようなものを使用するか、単に、十分な新しいバーが構築されたときに、パラメータに 移動し、何も変更せず、OKをクリックします)。トレンドが変化したときにそれが何をするか、期間に注意を払う。 私は間違ったインド太陽風のコードが何であるかを説明し、誰を説得しようとしているよりも良い 削除済み 2014.03.18 13:43 #2458 ピリオドを変更できないのですが、ソースコードだけ見ることができます。 #プロパティ 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); それで? Coding help アイカスタム Icustom Mladen Rakic 2014.03.18 13:47 #2459 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 Dedoctor 2014.03.18 19:11 #2460 このスクリプトを編集して、注文、ロットサイズ、買い/売りのみを残すのを手伝ってください。すでにテイクプロフィットやストップ ロスを自動で行うEAを所有しており、このインディと競合しています。 このスクリプトはMENUで指定した数の成行注文を自動的に一度に開くのですが、現在は5つの注文を入力しても1つの注文しか開きません。このエラーを修正し、SCRIPTから利食い/損切りを完全に削除するのを手伝ってください。 祝福を ファイル: open_multi_order-5_digits.mq4 3 kb 1...239240241242243244245246247248249250251252253...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Mladenさん、ありがとうございます!...これは、あなたが前のロジックで説明したように、二重のMacd比較と50クロスオーバーを持っていますか。 事前にありがとうございます。
マセリナ
メタトレーダー版ではセカンダリーシグナルが50ラインのrsiのクロスであるのに対し、アスペングラ版ではセカンダリーエントリーのシグナルはrsiとそのシグナル ラインのクロスであるという違いです。Macdの部分も同じです(クローズドバーのシグナルを取る必要があります。)
mladenの情報をありがとうございます...それは50ラインクロスと信号線の クロスを選択するための同じ指標のオプションを設定することは可能ですか...
ありがとうございました。
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。
HI
このインジケータはリペイントですか?もしそうなら、いつ、どれだけのバーが戻ってくるのでしょうか?
xps_v8_oscillator.ex4xps_v8_oscillator.mq4OKですが、私はオフラインのチャートM2でこれを使用しています :S だから、通常のタイムフレームではありません。
しかし、私はオフラインのチャート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);
それで?
周期を変更できないのですが、ソースコードはこちらで見ることができます。
#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から利食い/損切りを完全に削除するのを手伝ってください。
祝福を