アスク! - ページ 76

 

EAに関する質問

こんにちは、Codersguru。

私はプログラミングを学ぼうとしていて、あなたの教材を使っています。

質問ですが、EAの例としてema cross overを使っているので、emaの代わりにstepMA_7.2のインジケータを使おうと思っています。stepMA_7.2で大丈夫でしょうか?それとも、コードを整理する必要がありますか?

私は、コード内のインジケータの交換だけで表面化するはずだと考えていました。

よろしくお願いします。

ありがとうございます。

 
Michel:
これは間違っている:前のバーが正にカウントされている
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

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

 
 

まだいくつか問題があります。買い注文は正しく開かれますが、すべてストップロスで閉じられ、終了条件は無視されます。

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

//| EA Stripped Down.mq4 |

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

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

int start()

{

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

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

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

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

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

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

}
 
 

別指標の移動 平均

図解でわかる

 

範囲内のオープンポジションをチェック する

x pips以内のオープンポジションをチェックしようとしているのですが、もしポジションがなければオープンします。うまくいかず、ただ連続してポジションを開くだけです。誰か助けてくれませんか?

if(buyingPosition)

{

weBeBuying = true;

totalorders = OrdersTotal();

for(i=0;i<totalorders;i++)

{

OrderSelect(i,SELECT_BY_POS);

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

{

type = OrderType();

if((type == OP_BUY) || (type == OP_BUYLIMIT))

{

if(((Bid+spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = false;

}

}

}

}

if(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,lots,Bid+spread,slippage,0,0,NULL,magicNumber,0,Green).を実行します。

 

iCustom インジケータのMA

iCustom indicatorのMoving Average of 7, Smoothを参照するには、EAでどのようにコーディングすればよいのでしょうか? これは、最初のインジケータのデータを使用して移動平均を使用することと同じです。 iCustomインジケータを表示し、インジケータのMAを持つ(Using first indicators data)ことはできますが、eaではどのようにコーディングするのでしょうか?

この文章について、どうか助けてください

よろしくお願いします。

デイブ

誰かこの件で助けてくれませんか?お願いします!!!!

私はそれを得たと思います!:

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); //LOWER GAMMA

まだこれには助けが必要です - あなたは私を助けることができますか!?

 

MQL4に関する質問を投稿していただければ、できる限りお答えします。

エラーコードについて

私はちょうど私のすべての私の専門家に、私はエラーコード "OrderModify error 1 "を持っていることを私にアカウントを返しました、でもそのようなコーダーの達人のような専門家、以下。

なぜですか?

ありがとうございます。

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

//|PriceCross.mq4|||PriceCross.mq4

//| コーダーズグル

//|https://www.mql5.com/en/forum|

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

#property copyright "Coders Guru" (コーダーズ・グル)

#property link "https://www.forex-tsd.com"

//---- インクルード

#include

//---- 取引の制限

extern double TakeProfit = 200;

extern double TrailingStop = 50;

extern double StopLoss = 50;

extern double Lots = 0.1;

extern int Slippage = 5;

//--- 外部オプション

extern int CurrentBar = 1;

extern int HedgeLevel = 6;

extern double Expiration = 7200;

extern int Size = 4;

extern int Step = 1;

extern bool UseClose = true;

//--- インジケーターの設定

extern int MaMode = 3;

extern int MaPeriod = 24;

//--- グローバル変数

int MagicNumber = 101090;

string ExpertComment = "PriceCross";

bool LimitPairs = true;

bool LimitFrame = true;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // リミットしたいパリスを追加/削除します。

bool Optimize = true;

int NumberOfTries = 5;

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

int init()

{

return(0);

int deinit()

{

return(0);

}

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

bool isNewSymbol(string current_symbol)

{

//オープンしたすべての注文をループしてシンボルを比較する

int total = OrdersTotal();

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

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

int start()

{

int cnt, ticket, total,n;

double trend ;

if(Bars<100) {Print("bars less than 100"); return(0);}.

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("This EA is not working with this TimeFrame!"); return(0);}。

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("This EA is not working with this Currency!"); return(0);} {Print("This EA is not working with this Currency!

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- 取引条件

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Open[1]トレンド)

BuyCondition = true とする。

if (Open[1]>trend && Close[1]<trend)

SellCondition = true;

if (Open[1]>トレンド && Close[1]<トレンド)

CloseBuyCondition = true。

if (Open[1]トレンド)

CloseSellCondition = true。

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- 買いの条件

{

ticket = OpenOrder(OP_BUY); //<-- BUY注文を出す

CheckError(ticket, "BUY");

for(n=0 ; n< サイズ ; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration).のような注文を出すことができます。

}

return(0);

if(SellCondition) //<-- 売りの条件

{

ticket = OpenOrder(OP_SELL); //<-- SELL注文を出す

CheckError(ticket, "SELL")。

for(n=0 ; n < サイズ ; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration).この注文を出すには、OP_SELLSTOP,Lots,StopLoss,TakeProfit,ExpertComment,マジックナンバーを指定します。

}

return(0);

}

return(0)。

}

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY) //<-- ロングポジションを保有中

{

if(UseClose)

{

if(CloseBuyCondition) //<-- 注文をクローズして退場!

{

CloseOrder(OrderType());return(0);

}

TrailOrder(OrderType()); return(0); //<-- 注文をトレールする。

}

if(OrderType()==OP_SELL) //<-- ショートポジションへ移動

{

if(UseClose)

{

if(CloseSellCondition) //<-- 注文をクローズして退場!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- 注文をトレールする。

}

}

}

return(0);

}

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

....

 

こんにちは。

注文がすでに終了していることを知る方法はありますか?

図解するとこんな感じです。

2つの注文を保留にしています。

open #182 buy limit 0.17 EURUSD at 1.3005 sl: 1.2970 tp: 1.3013

open #183 buy limit 0.17 EURUSD at 1.3000 sl: 1.2968 tp: 1.3011

では

オーダー #182, buy 0.17 EURUSD is opened at 1.3005

1.3013 (1.3013 / 1.3015) で利益確定

注文番号182がクローズされた後、注文番号183を削除したいのですが。トリガーは、もし注文#182が閉じられたら、注文#183が削除されるということです。

乾杯