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

 

こんにちは。

私はコードを書き、理解することを始めています。今のところ圧倒されています。

MACD ヒストグラムとトライガーラインがヒストグラムの上下に交差するときを使用してEAを書き始めたいと思います。

どなたか、コードを理解するために簡単なプログラムを提案し、それを実行し、どのように取引するかを見ることができますか?

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

ダニエル

 

Excel/CSVからのトレンドラインインポート?

こんにちは、私はここ数日いくつかの簡単なスクリプトを書きました、特にObjectCreate (OBJ_TREND with Ray=1) これは本当に素晴らしい働きですが、私は私のクローズラインのためのいくつかの履歴のクローズデータを持っている準備ができたcsvファイルからオブジェクトを描くことができます、私は私のテンプレートを削除して、スクリプトでそれらを必要とするたびにデータをインポートできるようにしたいので。

どなたか、この方法をご存じないでしょうか?

CSVには日付(時間なし)と終値(行のデータはこれ以上必要ないでしょう)が入っています。

スクリプトは、この日付からRay=1とカスタマイズした色で線を引く必要があります。

スクリプトはまた、開いているチャート(シンボル)をチェックし、正しいcsvファイルを取ることができるかもしれません(複数ある場合);-)

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

 

OrderDelete(OrderTicket())のエラーについて

皆さん、こんにちは。

私はMQL4プログラミングの 初心者ですが、他の面ではC++を知っています。

しかし、私は取引関数でいくつかの問題を抱えています。

これは私の問題です。

私は保留中の注文を作成します。

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,",0,0,Green);

そして、プログラムの他の点で、私はそれを削除したい。

if (オーダーセレクト(チケット,SELECT_BY_TICKET))OrderDelete(OrderTicket())。

ERROR 4108! なぜ?チケットの番号は正しく、私はそれを印刷します。

しかし、もし私が:

if (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());

はOKです!

なぜでしょうか?

あなたのサポートとフォーラムのためにありがとうございました。

 

EAを終了させるコード ?

こんにちは、皆さん。

私はEAを終了させるコードを探しています。 私は私が書いた小さなマーチンゲールを投稿しました。 私はそれがそれが口座のドローダウンの割合に達したときに、すべての保留とオープンオーダーをクローズする場所を持っています。 また、1日の利益目標に達したときに取引を停止させることができました。 翌日からまた取引を開始します。 (SWB Gridを書いた人に感謝します。彼らのコードを使用したので)。

しかし、ある条件を満たすとEAを終了させたいと思っています。 例えば、最大ドローダウン率に達し、すべての保留中の注文と オープンポジションをクローズします。 その時点でEAを終了させ、私がチャートからEAを削除して元に戻すまで、EAは再び取引を開始しないようにしたいのです。

これがそのEAです。 どんな提案やヘルプでも大いに結構です!

ありがとうございます。

ジョー

ファイル:
 

"↵左括弧 "についてヘルプが必要です。

こんにちは、EAを作成しているのですが、コンパイル時にエラーメッセージが出続けています。"\end_of_program' - unbalanced left parenthesis." というエラーメッセージが表示されます。 通常、このエラーメッセージは、左右の括弧の数が不均等であることに関連しています。 しかし、私のコードをチェックしてみると、左括弧と右括弧の数は同じです。 だから、どこで間違ったのかが分からなくて、本当に困っているんだ。 どなたか、私のコードをチェックして、それを修正する方法を教えていただけませんか? 100万人に感謝します。 私のコードは以下に掲載されています。

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

//| ブレイクアウト.mq4

//| プーさん

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

#property copyright "プーさん"

#property リンク ""

//--- 入力パラメータ

extern int LengthI=23;// 市場に参入する場合

extern int LengthO=7;//extern int LengthO=7;//extern int LengthO=7;//出口用

extern double Lots=0.1; //注文サイズ

extern int N1=14; //ATRの期間

extern int NLots=1; //増加した注文ロット数

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

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

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

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

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

int start()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2)));

int cnt, cot, ticket, total;

total=OrdersTotal();

if (total<1)

{

if (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000,「EAロング」,123,0,Green);

if (チケット>0)

{

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

Print("ロングオーダー開始:",OrderOpenPrice());

else

Print("ロングオーダーの開始エラー :",GetLastError());

return(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EAショート",123,0,赤);

if (チケット>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("ショートオーダーが開きました:",OrderOpenPrice());

}

else Print("ショート注文の開始エラー:",GetLastError()).return(0); } Print("ショート注文を開始しました。

return(0);

return(0)。

}

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

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY)// ロングポジションがオープン

{

// クローズすべきか?

if(Bid<=LLong)

{

オーダークローズ(オーダーチケット(),オーダーロット(),ビッド,3,バイオレット);//ポジションをクローズする

return(0);

//トレーリングストップの変更

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);

return(0);

}

さもなくば

{

if(アスク>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//ポジションクローズ

return(0)。

//トレーリングストップの変更

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);//トレーリングストップを変更。

return(0);

}

}

}

//ロングとショートの注文ロットの合計を取得

double LOrderLots=0;

double SOrderLots=0;

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots()。

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

SOrderLots=LOrderLots+OrderLots()。

}

//新規注文を増加させる

for(cot=0,cot<=total,cot++)

{ //1

//ロング注文のポジションを追加

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //未決済注文がある場合

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2-もしEAが開いた注文があれば、注文の種類はLongです。

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000,「EAロング」123,0,Green); //5件

if (チケット>0)

{ //6

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

Print("ロングオーダー開始:",OrderOpenPrice());

} //6

それ以外の場合

Print("ロングオーダーの開始エラー :",GetLastError())。

ブレーク

//5

//4

return(0);

//ショートオーダー用のポジションを追加

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001,「EAショート」123,0,赤); //9件

if (チケット>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("ショートオーダー開始:",OrderOpenPrice());

} // 10

それ以外の場合

Print("ショートオーダー開始エラー :",GetLastError())。

ブレーク

//9

//8

return(0);

} //7

//3

} //2

} //1

return(0)

}

 

簡単なインジケーターをコーディングしてくれるコーダーが必要です。

これを行うインジケーターをコーディングしてくれる人が必要です。

シンプルなフィボナッチで、0,50,100のラインのみを使用します。バーが50%以上または50%未満で閉じると、私は両方ではなく、上または下のクローズを探しているかどうかを選択するオプションを持っている。50%以下で終値を探している場合、50%以上で終値がつくたびにアラートが鳴るのは困ります。私はそれが音で私に警告し、私に電子メールやテキストを送信したい。これは可能ですか?ありがとうございます!

画像: http://tinypic.com/r/dhbu6v/5

 

簡単なロジックのコーディングができない!

こんにちは、フォーラムです。

MQL4が得意な方にとってはとても簡単なことだと思いますが、私は初心者で、問題があります。

自動売買をしたいのですが

ロットサイズ0.1

ストップロス=30ピップス

利益目標50ピップス

ペア AUDUSD

02:00 GMTから10:00 GMTの間に(highprice - lowprice) < 60 pipsなら lowprice - 5pipsでAUDUSDを売 るかhighprice + 5pipsでAUDUSDを買い、それ以外は 取引しない。

 
Avasys:
こんにちは、フォーラムです。

MQL4が得意な方にとってはとても簡単なことだと思いますが、私は初心者で、問題があります。

そこで、自動売買をしたいのですが

ロットサイズ0.1

ストップロス=30ピップス

利益目標50ピップス

ペア AUDUSD

02:00 GMT から 10:00 GMT の間に (highprice - lowprice) < 60 pipsならば lowprice - 5pips で AUDUSD を売るか highprice + 5pips で AUDUSD を買い、それ以外は 取引なし。

[lang=pl]こんにちは、私はそれがこのEAをコーディングするのに問題ないと思いますが、私は質問があります。

いつ売買したいのでしょうか?安値-5 高値+5 のレベルで保留注文が 必要でしょうか?

よろしくお願いします。

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]こんにちは、私はそれがこのEAをコーディングするのに問題はないと思うが、私は質問があります。

売り買いしたいタイミングは?安値5高値+5のレベルで保留注文が必要ですか?

よろしくお願いします。

Grzesiek[/lang]

こんにちは。

ありがとうございます。

そうです。より正確には、AUDUSDの02:00 GMTと10:00 GMTの間の取引範囲(高値と安値の差)(これはコード上非常に重要です)が60 pips未満なので、これは取引可能なシグナルです。ですから、価格が安値(02:00と10:00の間)-5pipsになったら売り、価格が高値+5pipsになったら買うのです。

02:00 から 10:00 の間に GBPUSD の安値は 1.6000、高値は 1.6050 で、価格が 1.5995 になったら自動的に売り、価格が 1.6055 になったら自動的に買い、30ピップの損切り注文を自動的に出して 50ピップを利食い します。

もし時間がなければ、どのように始めるかを教えてください。

感謝

 
pooh123:
こんにちは、私はEAに取り組んできました、私はコンパイル時にエラーメッセージを取得し続けます。"「 \end_of_program 」 - アンバランスな左括弧。" 通常、このエラーメッセージは、左右の括弧の数が不均等であることに関連しています。 しかし、私のコードをチェックしてみると、左括弧と右括弧の数は同じです。 だから、どこで間違ったのかが分からなくて、本当に困っているんだ。 どなたか、私のコードをチェックして、それを修正する方法を教えていただけませんか? 100万人に感謝します。 私のコードは以下に掲載されています。

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

//| Breakout.mq4

//| プーさん

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

#property copyright "プーさん"

#property リンク ""

//--- 入力パラメータ

extern int LengthI=23;// 市場に参入する場合

extern int LengthO=7;//extern int LengthO=7;//extern int LengthO=7;//出口用

extern double Lots=0.1; //注文サイズ

extern int N1=14; //ATRの期間

extern int NLots=1; //増加した注文ロット数

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

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

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

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

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

int start()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2)));

int cnt, cot, ticket, total;

total=OrdersTotal();

if (total<1)

{

if (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000,「EAロング」,123,0,Green);

if (チケット>0)

{

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

Print("ロングオーダー開始:",OrderOpenPrice());

else

Print("ロングオーダーの開始エラー :",GetLastError());

return(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EAショート",123,0,赤);

if (チケット>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("ショートオーダーが開きました:",OrderOpenPrice());

}

else Print("ショート注文の開始エラー:",GetLastError()).return(0); } Print("ショート注文を開始しました。

return(0);

return(0)。

}

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

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY)// ロングポジションがオープン

{

// クローズすべきか?

if(Bid<=LLong)

{

オーダークローズ(オーダーチケット(),オーダーロット(),ビッド,3,バイオレット);//ポジションをクローズする

return(0);

//トレーリングストップの変更

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);

return(0);

}

さもなくば

{

if(アスク>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//ポジションクローズ

return(0)。

//トレーリングストップの変更

オーダーモディファイ(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);//トレーリングストップを変更。

return(0);

}

}

}

//ロングとショートの注文ロットの合計を取得

double LOrderLots=0;

double SOrderLots=0;

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots()です。

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

SOrderLots=LOrderLots+OrderLots()。

}

//新規注文を増加させる

for(cot=0,cot<=total,cot++)

{ //1

//ロング注文のポジションを追加

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //未決済注文がある場合

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2-もしEAが開いた注文があれば、注文の種類はLongです。

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1))//4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000,「EAロング」123,0,Green); //5件

if (チケット>0)

{ //6

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

Print("ロングオーダー開始:",OrderOpenPrice());

} //6

それ以外の場合

Print("ロングオーダーの開始エラー :",GetLastError())。

ブレーク

//5

//4

return(0);

//ショートオーダー用のポジションを追加

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001,「EAショート」123,0,赤); //9件

if (チケット>0)

{ // 10

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

Print("ショートオーダー開始:",OrderOpenPrice());

} // 10

それ以外の場合

Print("ショートオーダー開始エラー :",GetLastError())。

ブレーク

//9

//8

return(0);

} //7

//3

} //2

} //1

return(0)

}

[関数 OrderMagicNumerでは、2つのアンバランスな") "を最後に使用する必要があります。また、forループでは、", "の代わりに"; "を使用する必要があります。

もし、アンバランスな括弧を見つける必要があるならば、私はメモ帳 ++ [/lang] をお勧めします。

ファイル:
eamod.mq4  5 kb