アスク! - ページ 51

 
pawang:
こんにちは。

とても基本的な質問で申し訳ないのですが。

私はmql4を学んでいます。

この数学の条件をmql4で表現する方法を教えてください。

IF( (A>B) AND (|X| <1) AND (Y<Z) ) then... ... ...。

|X|は絶対で、(X 1)を意味します。

MetaEditorからメッセージが表示されました。

"if 式が複雑すぎる" と表示されました。

何度も試してみたがもうアイデアがありません...だから、どうしたらいいか教えてください...

感謝

これを試してみてください。

if((a>b && MathAbs(x)<1) && y<z)

{

//ここに起こるべきことを書いてください

}

 

オラクルに質問です...

EAに最適化を実行させ、毎日自動的に設定を調整させる方法はありますか?

16個のパラメータに対して 30日間のプロフィットファクター最適化を実行し、再度取引を開始する前に設定を適用させたいと考えています。毎日8時間ほど自動的にシャットダウンされます。

どなたかコード化する方法をご存じないでしょうか?素晴らしいEAレベルから、非常識に儲かるAIレベルまで持っていけるだろう...

これはまた、誰もがそこにEAで使用するための良いコードになるかもしれない。

EA fourmにも投稿したのですが、今までこのことは知りませんでした。

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

 

アドバイスお願いします

MACDがマイナスになったら赤いバー、マイナスになったら赤いまま、プラスになったら緑のバーなど、掲載した写真のインジケーターのように別のウィンドウにバーインディケーターを作成することは可能ですか?また、価格が移動 平均を下回る場合、同じバーインディケーターウィンドウを作成することは可能でしょうか?

もしこれが馬鹿げた質問に思えるなら、どうか我慢してください。私はチャート上の指標を見るとき、私は価格が何をするかを予測しようとする傾向があるので、私はすべてが同じ色を示したときに私が取引する別々のウィンドウの指標を試して、持っていることを探しています。[心理的な理由)。これらの別々のバータイプの指標の作成は、私が作成することを学ぶことができる何か、任意の言語でプログラマから遠いイムです。

どんなアドバイスも非常に高く評価されるでしょう。

dh

ファイル:
chart.jpg  11 kb
 
pawang:
こんにちは

とても基本的な質問で申し訳ないのですが。

私はmql4を学んでいます。

この数学の条件をmql4で表現する方法を教えてください。

IF( (A>B) AND (|X| <1) AND (Y<Z) ) then... ... ...。

|X|は絶対で、(X 1)を意味します。

MetaEditorからメッセージが表示されました。

"if 式が複雑すぎる" と表示されました。

何度も試してみたが何度も試しましたが、もうアイデアがありません。

感謝

if(a>b && (x 1) && y<z){?

;あなたのコード

}

というのは、MathAbs(x) < 1 が真になるのは x=0 のときだけだからです。

http://docs.mql4.com/basis/operations/bool

一方、単純にこれが必要な場合もあります。

if(a>b && x<1 && y<z)

あるいは

if(a>b && x<-1 && y<z)

xはあなたの定義によると、0または-1では決してないので

私はあなたの絶対値の定義に混乱している

 
dxx:
それは、MACDが負のクロスした場合、赤のバーと言うために、私が投稿した写真の指標[彼らは正式には何と呼ばれるかわからない]のような別のウィンドウでバー指標を作成することが可能ですか、負のゾーンで、正のクロスした場合緑を維持するなど等。また、価格が移動平均を下回る場合、同じバーインディケーターウィンドウを作成することは可能でしょうか。

もしこれが馬鹿げた質問に思えるなら、どうか我慢してください。私はチャート上の指標を見るとき、価格がどうなるかを予想しようとする傾向があるので、私は別々のウィンドウの指標を試して、すべてが同じ色を示したときに私が取引することを探しています。[心理的な理由)。これらの別々のバータイプの指標の作成は、私が作成することを学ぶことができる何か、任意の言語でプログラマから遠いイムです。

任意のアドバイスは非常に感謝されるでしょう。

dh

はい、これは可能です。

 
dxx:
MACDがマイナスを越えたら赤いバー、マイナスなら赤のまま、プラスなら緑のバーなど、掲載した写真のインジケーターのように別のウィンドウにバーインディケーターを作成することは可能ですか?また、価格が移動平均を下回る場合、同じバーインディケーターウィンドウを作成することは可能でしょうか。

もしこれが馬鹿げた質問に思えるなら、どうか我慢してください。私はチャート上の指標を見るとき、価格がどうなるかを予想しようとする傾向があるので、私は別々のウィンドウの指標を試して、すべてが同じ色を示したときに私が取引することを探しています。[心理的な理由)。これらの別々のバータイプの指標の作成は、私が作成することを学ぶことができる何か、任意の言語でプログラマから遠いイムです。

任意のアドバイスは非常に感謝されるでしょう。

dh

ここであなたは正確にあなたが望むものであり、以下のように異なる設定で1つのチャートに同じ指標のすべての4つをロードし、すべての赤のときに販売し、すべての青のときに購入します。

設定

1つ目を15分に設定

2番目 30分

三番目 60分

四番目 140分

ファイル:
 

感謝

皆さん、ありがとうございます。

とても感謝しています。

 

一定のティックチャートや一定のレンジバーを別のウィンドウにプロットする何らかのタイプのインジケータを書くことは可能でしょうか?これらは時間軸を持たない別のチャート形式です。例えば、100ティックバーは、価格が100ティック動くたびに形成されます。つまり、出来高が少ない場合はバーが形成されません。一定範囲バーは、価格が範囲内で設定されたティック数だけ動くと形成されます。例えば、20に設定されたレンジバーは、価格が20ピップのレンジを埋めるたびに形成されます。その後、次のバーが開始されます。これらは時間ベースではないので、このプラットフォームで可能かどうかはわかりません。

 

EAに簡単なアラートを追加する

こんにちは、私はここで必要な小さな助けを見つけることを望む!あなたは、例えば、このEAのためのアラートを追加する方法を私に示すことができますか? ちょうど条件が買いのために満たされたとき、それはまた私に警告する。

ありがとうございます。

レオ

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

extern double Lots = 1.0;

extern int Slippage = 3;

extern bool StopLossMode = True;

extern int StopLoss = 30;

extern bool TakeProfitMode = True; extern int StopLoss = 30; extern bool TakeProfitMode = True;

extern int TakeProfit = 60;

extern bool TrailingStopMode = True; extern int TakeProfit = 60; extern bool TrailingStopMode = True;

extern int TrailingStop = 30; extern int TrailingStop = 30;

#定義 SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#定義 SIGNAL_CLOSESELL 4

int BarCount;

int Current;

bool TickCheck = False;

//+------------------------------------------------------------------+

//| エキスパート初期化関数

//+------------------------------------------------------------------+

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

//+------------------------------------------------------------------+

//| エキスパート初期化関数

//+------------------------------------------------------------------+

int deinit() {

return(0);

}

//+------------------------------------------------------------------+

//| エキスパートスタート機能

//+------------------------------------------------------------------+

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

オーダー = SIGNAL_NONE;

//+------------------------------------------------------------------+

//| 変数開始

//+------------------------------------------------------------------+

double Buy1_1 = iMA(NULL, 0, 89, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iClose(NULL, 0, Current + 0);

double Buy2_1 = iMA(NULL, 0, 445, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Buy2_2 = iClose(NULL, 0, PRICE_CLOSE, Current + 0);

double Buy2_2 = iClose(NULL, 0, Current + 0); double Buy2_1 = iMA(NULL, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

//+------------------------------------------------------------------+

//| 変数終了

//+------------------------------------------------------------------+

//ポジションチェック

bool IsTrade = False;

for (int i = 0; i < トータル; i ++) { { {オーダーセレクト(i, SELECT_BY_PASS)

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())) { IsTrade = True?

IsTrade = Trueです。

if(OrderType() == OP_BUY){

//Close

//+------------------------------------------------------------------+

//| シグナル開始(買い終了)

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| シグナル終了(買い終了)

//+------------------------------------------------------------------+

if (オーダー == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy").If(EachTickMode):シグナルを送信します。

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

を続けます。

}

//トレーリングストップ

if(TrailingStopMode && TrailingStop > 0) { /トレーリングストップ

if(ビッド - オーダーオープン価格() > ポイント * TrailingStop) { {

if(オーダーストップ・ロス() < ビッド - ポイント * トレーリングストップ) { { (ビッド - ポイント * トレーリングストップ)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。

if (!EachTickMode) BarCount = Bars;

を続けます。

}

}

}

} else {

//Close

//+------------------------------------------------------------------+

//| シグナル開始(売り終了)

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| シグナル終了(売り終了)

//+------------------------------------------------------------------+

if (オーダー == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell").If(EachTickMode):シグナルを送信します。

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

を続けます。

}

//トレーリングストップ

if(TrailingStopMode && TrailingStop > 0) { /トレーリングストップ

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { { {

if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。

if (!EachTickMode) BarCount = Bars;

を続けます。

}

}

}

}

}

}

//+------------------------------------------------------------------+

//| Signal Begin(Entry)シグナル

//+------------------------------------------------------------------+

if (Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY.Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;

//+------------------------------------------------------------------+

//| シグナル終了

//+------------------------------------------------------------------+

//買い

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){

if(!IsTrade){。

//フリーマージンチェック

if (アカウントフリーマージン() < (1000 * ロット)) {

Print("資金がありません。フリーマージン = ", AccountFreeMargin());

return(0);

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0。

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue)。

if(チケット > 0) {

if (オーダーセレクト(チケット、SELECT_BY_TICKET、MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy")。

} else {

Print("買い注文の開始エラー :", GetLastError());

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//売り

if (注文 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。{

if(!IsTrade){。

//フリーマージンチェック

if (アカウントフリーマージン() < (1000 * ロット)) {

Print("資金がありません。フリーマージン = ", AccountFreeMargin());

return(0);

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0。

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。

if(チケット > 0) {

if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error opening SELL order :", GetLastError());

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars; return(0) } } if (!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+

 

お礼とその他の質問

私の質問に答えてくれてありがとうございました。

newdigital, Kalenzo, asmdevの皆さん。

そして、すべての人に感謝します。

次の質問です。

1.)起こることと起こったことの値を比較する方法

例えば、時間の変数である "n "を今とすると、n-a = "a "時間前となります。

(n-a)に起こった時のRSIとRSIn(now)の値を比較する方法。

また、MA50を現在から3本前のバーと最後のバーで比較するにはどうしたらよいでしょうか。

2.)1.によると、実際のところ、強気・弱気の乖離はどのように発生するのでしょうか?

その条件とは 定義された時間枠の最高値と最高値のRSIが存在する。そして、時間が経過した後...我々は新しい最高値に出会うが、新しいRSIの高値(RSIは新しい高値を作るのに失敗した)が続いていない。

このような状況は、現実性の高い売り シグナルであり、買いシグナルはその逆であることは誰もが知っていることなので、私のEAにそれを知ってもらいたい。

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