こんにちは
今、この問題を解決しました。EAをコンパイルして、バックテストをして みました。しかし、残念ながら、それは何も購入または売却しません!それは、それが動作しているように見えます。
これを除いて、それは動作するように見える、これはジャーナルです。
14:16:18 EL1 入力。Lots=0.1; Timeframe=240;
14:16:18 ELine GBPUSD,H4: 削除されました。
14:16:18 2005.11.14 00:00 ELine GBPUSD,H4: 正常にロードされました。
そして、これがEAコードです。
//+------------------------------------------------------------------+
//| T1.mq4
//|
//|
//+------------------------------------------------------------------+
extern double Lots = 0.1;
extern int Timeframe = 240;
string strDirCurrent="なし";
string strDirPrevious="none"。
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
{
// 現在の方向をチェックする
if(iCustom(NULL,Timeframe, "ELine",0,0)>iCustom(NULL,Timeframe, "ELine",1,0))
strDirCurrent="long "とする。
if(iCustom(NULL,Timeframe, "ELine",0,0)<iCustom(NULL,Timeframe, "ELine",1,0))の場合
strDirCurrent="ショート";
// 直前の方向と比較し、変化があればポジションを建てる
if(strDirCurrent=="long" && strDirPrevious=="short")
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,50,200, "EABuyOrder",16384,0,Green).を送信します。
if(strDirCurrent=="short" && strDirPrevious=="long")
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,50,200, "EASellOrder",16384,0,Red).を送信します。
strDirPrevious=strDirCurrent;
}
// 終了。
どんなヘルプも大歓迎です!
ありがとうございます
エリック
balueさん、ありがとうございます。NULLのスペースはコピー&ペーストによるもので、私のコードでは正しく記述されています。そして、それは(2番目のバージョン)コンパイルされます。
MQLのコースは知っています(まだ全部は読んでいませんが)。
ADX用の似たようなEAをテスト用に書きましたが、そこでは動作しています。私のカスタムインジケータを 使用しようとしたときだけ、それは取引しません。
インジケーターを添付してください -バックテストを 行うことができます。
こんにちは
素晴らしいコードです - ぜひバックテストをさせてください - あなたのカスタム・インジケータをお教えください。
私はあなたのコードを広範囲に修正しました。
/*
* Created by SharpDevelop.
* User: CARDIO
* Date: 1/17/2006
* Time: 4:55 AM
*
*Todo: if there is an ope position - close it- then open in opposite direction.
*
*/
//+------------------------------------------------------------------+
//| T1.mq4
//|
//|
//+------------------------------------------------------------------+
#include
extern double Lots = 0.1;
extern int Timeframe = 240;
string strDirCurrent="none";
string strDirPrevious="none";
int cnt, magicEA;
bool isclosing = false;
double slippage = 3;
int init() {
return(0);
}
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
magicEA = 16384;
// check for current direction
if(iCustom(NULL,Timeframe,"ELine",0,0)>iCustom(NULL,Timeframe,"ELine",1,0))
{
strDirCurrent="long";
}
if(iCustom(NULL,Timeframe,"ELine",0,0)<iCustom(NULL,Timeframe,"ELine",1,0))
{strDirCurrent="short";
}
// compare to previous direction and open a position if there was a change
if(strDirCurrent=="long" && strDirPrevious=="short")
{
//firs close open positions
isclosing = true;
isclosing1();
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,"T1_EA_Buy_Order",16384,0,Green);
return(0);
}
if(strDirCurrent=="short" && strDirPrevious=="long")
{
isclosing = true;
isclosing1();
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,"T1_EA_Sell_Order",16384,0,Red);
return(0);
}
strDirPrevious=strDirCurrent;
return(0);
}
// the end.
void isclosing1(){
//Close all open orders
//todo: get a requote on the prices if error 138 occurs, use refreshrates
//todo: check if the last 3 closes where losers - if so stop the ea
int totalOrders = OrdersTotal();
int numPos = 0;
for(cnt=0; cnt<totalOrders; cnt++) { // scan all orders and positions...
OrderSelect(cnt, SELECT_BY_POS); // the next line will check for ONLY market trades, not entry orders
if(OrderSymbol() == Symbol() && OrderType() <= OP_SELL && OrderMagicNumber() == magicEA) { // only look for this symbol, and only orders from this EA
numPos++;
if(OrderType() == OP_BUY) { // Check for close signal for bought trade
if(isclosing) {
if (OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Violet)) { // Close bought trade
//writetofile("10","Closed buy", OrderTicket());
//prtAlert("Day Trading: Closing BUY order");
} else {
// writetofile("10b","Closed buy fail", ErrorDescription(GetLastError()));
}
}
} else { // Check sold trade for close signal
if(isclosing) {
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Violet);
//writetofile("10","Closed buy", OrderTicket());
// prtAlert("Day Trading: Closing SELL order");
}else {
//writetofile("10c","Closed sell fail", ErrorDescription(GetLastError()));
}
}
}
}
}
まだ修正中 - 今すぐ投稿しますから待っててね
まだ修正中

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは。
私は非常にシンプルなEAを作ろうとしていますが、プログラマーではありませんし、EAを作ったこともありません。
MT4のMACDのサンプルを使って、いくつかの部分を編集し、残りの部分は必要ないと思って削除しました。
私のコードは本当にひどいと思います。
このようなEAにしたいと思います。
私のカスタムインジケータ ELineは、ステップで移動する2つのラインを持っています。あるときは一方が他方より高く、あるときは同じになります。
一方の線が他方の線と交差するとき、どちらの線が上に交差するかによって、EAがロングポジションまたはショートポジションを取るようにしたいのです。
EAの開始時以外は常にオープンポジションです。
コンパイルしようとすると、"if" - セミコロンが期待される (20,7) と表示されます。
次のステップでは、新しいポジションを開いたときに、すでにあるポジションを常にクローズしなければなりませんが、私は今のところこれをコーディングすることができませんでした。
どなたか、私のコードの誤りを訂正していただけませんか。また、EAが新しいポジションを持つたびにポジションをクローズする方法を教えていただけませんか。
どうもありがとうございました。