コーディングの方法は? - ページ 237

 

EAの種類によっては、スプレッドも継続的に保存する必要があることに留意してください。

 

HIGH [0] -- 現在のバーで、ちょうど開始したところです。

Lowの場合、私は知らない、多分Low[1]です。

 

OrderSend(),OrderModify()を置くべき正しい順序について

先日、フォーラムでOrderSend()とOrderModify()関数についての トピックを読みました。

このトピックは、あるEAが動作し、他のEAが動作しなかった理由の手がかりを与えて、私は関数OrderSend()とOrderModify()が適切に書かれているかどうかを確認する方法を疑問に思っていますany examples?

 

こんにちは、皆さん

MT4で全ペアのリストを取得するためのコードを教えてください。

ありがとうございます。

シャルル

 
sunshineh:
こんにちは。

Ask[1]と書くのはおかしいのですが、最後のティックからAsk-Priceを取得するにはどうしたらいいのでしょうか?

ありがとうございます。

リアルタイムでティックを保存して、EAやインジケータからアクセスする必要があります。 もしご興味があれば、例を書いてみますね。

 
DooMGuarD:
こんにちは、皆さん...

MT4で全ペアのリストを取得するためのコードを教えてください。

ありがとうございます。

シャルル

Mql5でやるのが簡単だと思うので、落ち着くまで待ちましょう。

 

マジックトレンドの値を変数で取得する...

こんにちは!

EAを開発中なのですが、マジックトレンドのインジケータの値を変数で取得する方法を考えています。

今のところ、ゼロからコーディングしなければならないようです。

どなたか助けていただけませんか?

どうもありがとうございます!

 
atch3000:
こんにちは。

EAを開発していて、マジックトレンドインジケータの値を変数で取得する方法を考えています。

今のところ、ゼロからコーディングしなければならないようですが、数学に関する情報が見つかりません。

どなたか助けてください。

どうもありがとうございます!

MQL4でICustom 関数を使用する方法についての情報を探してください。この関数を使えば、EAで外部インジケータを呼び出すことができます。

-ガイバー

 

ロボット - 高速・低速の2つの移動平均MAに関する自動化EA

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 0.2;

extern int Slippage = 3;

extern bool UseStopLoss = True;

extern int StopLoss = 15;

extern bool UseTakeProfit = True;

extern int TakeProfit = 30;

extern bool UseTrailingStop = True; extern int TakeProfit = 30; extern bool UseTrailingStop = True;

extern int TrailingStop = 20;

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 Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1)です。

double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

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

//| 変数終了

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

//ポジションチェック

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 (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY;

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

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

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

if (Order == 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(UseTrailingStop && TrailingStop > 0) { /トレイリングストップ

if(ビッド - 注文開始価格() > ポイント * TrailingStop) { {

if(OrderStopLoss() < ビッド - ポイント * トレイリングストップ) { { {

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

if (!EachTickMode) BarCount = Bars;

を続けます。

}

}

}

} else {

//Close

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

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

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

if (CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL;

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

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

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

if (Order == 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(UseTrailingStop && 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 && False) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2 && False) Order = SIGNAL_SELL; if (Sell1_1 < Sell1_2 && False) 注文 = SIGNAL_SELL;

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

//| シグナル終了

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

//買い

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

if(!IsTrade){。

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

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

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

return(0);

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

if (UseTakeProfit) 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 (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) 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);

}

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

私は知らないので、//どこにエラーが発生します。

 

どのようなエラーが発生しますか?