アスク! - ページ 11

 

EAが通信できるようにスクリプトか何かでサーバーとして便宜を図るということですよね。 metaquotesがそういうのを出すには時間がかかると思います。 ただ、mql4.comを見ると、私が言っていたGlobalVariableSetOnCondition()という関数は、実行がアトミックだそうです。 これを使えば、私が必要とすることを行うための一連の関数を考え出すことができるでしょう。

 

どなたか教えてください。https://www.mql5.com/en/forum/174184?

 

ヘルプ -ゼロ除算

こんにちは、すべてのコーダー

このエラーを解決するにはどうしたらいいのでしょうか?

助けてくれてありがとうございます。

ファイル:
ok.gif  16 kb
error.gif  16 kb
ttm_stoch.mq4  5 kb
 

ジュマ

こんにちは、codersguruです。

EAコードでEMAの代わりにjmaを使うことはできますか?

 
 

ヘルプが必要 - 調整済みMACD

RSIの値に基づいてシグナルラインを 調整するインジケータを作成しようとしています。本当に私は調整されたMACDに別の信号線を描き、通常の信号線をそのままにしておきたいのです。

を編集しました。

同じウィンドウにRSIのライン(第一段階)を引くようにインジケータを設定しました。しかし、何らかの理由で最後の期間を描画しません。添付ファイルをご覧ください。

ファイル:
 

Anythelp would be great

ここに私が問題を抱えているコードのビットです////それは私が北金融でそれをロードするときに1回動作し、二度と取引を行いません...しかし、それはインターバンクで何もしません...それはカマを使用して反転システムです...私はそれが最初にそれをロードしたときに完璧に北金融で1取引を行いましたが、それはすでに行われているはずの既存の貿易だったので私は何が起こっているかわからない......。

 

コード

#property copyright "Expert Advisor Builder" (エキスパート・アドバイザービルダー)。

#property リンク "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 1;

extern int Slippage = 3;

extern bool StopLossMode = True;

extern int StopLoss = 40;

extern bool TakeProfitMode = False; extern int StopLoss = 40; extern bool TakeProfitMode = False;

extern int TakeProfit = 60;

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

extern int TrailingStop = 35;

#定義 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 Var1 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, Current + 0);

double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Current + 0); double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Current + 0);

double Var3 = iCustom(NULL, 0, "KAMARSI", 14, 0, Current + 0);

double Buy1_1 = Var1 ;

double Buy1_2 = 25;

double Buy2_1 = Var2 ;

double Buy2_2 = 80;

double Buy3_1 = Var3 ;

double Buy3_2 = 50;

double Sell1_1 = Var1 ;

double Sell1_2 = -25;

double Sell2_1 = Var2 ;

double Sell2_2 = -80;

double Sell3_1 = Var3 ;

double Sell3_2 = -50;

double CloseBuy1_1 = Var1 ;

double CloseBuy1_2 = -25;

double CloseBuy2_1 = Var2 ;

double CloseBuy2_2 = -80;

double CloseBuy3_1 = Var3 ;

double CloseBuy3_2 = -50;

double CloseSell1_1 = Var1 ;

double CloseSell1_2 = 25;

double CloseSell2_1 = Var2 ;

double CloseSell2_2 = 80;

double CloseSell3_1 = Var3 ;

double CloseSell3_2 = 50; double CloseSell3_1 = Var3; double CloseSell3_2 = 50;

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

//| 変数終了

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

//ポジションチェック

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 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_2) Order = SIGNAL_CLOSEBUY.Of.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(TrailingStopMode && TrailingStop > 0) { /トレーリングストップ

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

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

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

if (!EachTickMode) BarCount = Bars;

を続けます。

}

}

}

} else {

//Close

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

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

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

if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_2) Order = SIGNAL_CLOSESELL.Order = CloseSell1_1 >= CloseSell2_2;

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

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

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

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(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 && Buy3_1 >= Buy3_2) Order = SIGNAL_BUY.If (Sell1_1 <= Sell1_2 && Sell2_1 = Sell1_2) Order = SIGNAL_BUY;

if (Sell1_1 <= Sell1_2 && Sell2_1 = Sell3_2) Order = SIGNAL_SELL; if (Sell1_1 <= Sell1_2 && Sell2_1 = Sell3_2) Order = SIGNAL_SELL;

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

//| シグナル終了

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

//買い

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);

}

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

 

エキスパートでインジケーターの.0005の値を変更したのですが、これは最終的にチャンネルラインを表示するだけなので、レベルを変更する必要があります。

 

ブレイクイーブンとトレイリングストップに関する問題

こんにちは。

CodersguruのMQL4チュートリアルを使ってコーディングを学んでおり、"My_First_EA "に取り組んでいます。これは本当に私の最初のEAです。とてもよく動くのですが、ブレイクイーブンストップを書こうとしているのですが、うまくいきません。問題は、ブレイクイーブンストップがトレーリングストップと同じように価格に追随することです。最初のストップロスは、15ピップス(例)儲けたときに1ピップの利益を維持するように動き、その後、トレーリングストップが25ピップの利益で機能し始めるまで、ストップロスをブレイクイーブンのストップ(1ピップの利益)で維持させたいと考えています。その後、トレーリングストップは通常通り利益の1ピップごとに動くようにしたいのです。問題は "OrderStopLoss() "だと思うのですが、もう何もわかりません。私の脳はドロドロです。ありがとうございました。

以下は私が行った関連するコードです。

extern double TrailingStop=25.0;

extern double BreakEvenProfit=15;

extern double BreakEvenStop=1.0; extern double BreakEvenProfit=15; extern double BreakEvenStop=1;

......................

私のエントリーおよびオープンオーダーのコードは問題なく動作します。

......................

for (cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderType()<=OP_SELL&&OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY)//ロングポジションを建てる

{

//閉じるべき?

if (FSAR > FMA) //私の終了シグナル

{

//----CLOSE LONG POSITIONは正常に動作します。

オーダークローズ(OrderTicket(),OrderLots(),Bid,3,Magenta);

return(0);//終了

}

/////////////////////////////////////////以下問題箇所です。

//----ロングポジションのブレイクイーブンストップをチェックする------。

if (買値-売値() > BreakEvenProfit*Point)

{

if (OrderStopLoss() < OrderOpenPrice()+ BreakEvenStop*Point)

{

注文変更(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenStop*Point,OrderTakeProfit(),0,Yellow).OrderModify(OrderTicket(),OrderPrice() + BreakEvenStop*Point)

return(0);

}

}

//-----以下はすべて典型的なトレーリングストップとして機能します。

//----トレーリングストップをチェックする LONG POSITION

if(TrailingStop>0)

{

if (買値-売値()>ポイント*トレイリングストップ)

{

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

{

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Yellow);

return(0);

}

}

}

}

else//ショートポジションに移動