一度立ち上げたレートを5分足チャートで条件付きで追いかけるようなアドバイザー。 - ページ 6 1234567891011121314 新しいコメント dertop 2008.03.19 06:21 #51 ごきげんよう。 アドバイスお願いします:ファイルに速やかに履歴を書き込むスクリプトがあるのですが、ファイルを開くと記録が行かないのです...。このスクリプトは、currency_loaderと呼ばれるもので、ご存知の方も多いと思います。 // M1からの履歴 データの読み込み void LoadingM1(){//1 int MaxBars=MaxBarsInFile; if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0);}; ArrayM1(ArrayM1);}. if(ArrSizeM1>1){//2 if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}. for(i2=1; i2<=Tryes; i2++){//3 h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV)。 if(h1==-1){LastError=GetLastError();Info("1.2",1"," There is error while opening file: "+FileNameM1+" at "+i2+" Try "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1.2",2", "ファイル "+FileNameM1+"のオープンに成功");}。 FileWrite(h1,FirstLine)を実行します。 for (i=MaxBars-1; i>=0; i-- ){//4 if(!USRegionSet){。 CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+""; // バーの日付 CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // バーの時間 } else{ BarTime=ArrayM1[i][0]; CString=CString+GetUSFormatTime(BarTime)+" "; // バーの日付 BarTime=0。 } CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // 開放価格 CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // 高値の場合 CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // 安値の場合 CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+"; // 終値 FileWrite(h1,CString)。 CString=""です。 }//4 FileClose(h1)です。 LCM1 = iTime(Symbol(),PERIOD_M1,0)とする。 を返します。 }//3 }//2 }//1 私が理解した限りでは、ハンドルに問題があるのですが、どこに問題があるのでしょうか...。 An advisor that would どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - Experts: OpenTime Aleksandr 2008.03.19 18:34 #52 EAをテストしたところ、以下のパラメータで利益を示しました。 //+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" extern double StopLoss=30; // Stop Loss extern double TakeProfit=3; // Take Profit extern double Lots=0.02; // Объем сделки в % extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern double Delta=30; // Сигнал приказа в пунктах extern double MagicNumber ; // Order ID int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"Продал",MagicNumber,22222,Green); } //---- return(0); } //+------------------------------------------------------------------+ まだダメなのか!!!! 何が原因なのか、わかるように助けてください。 Rid 2008.03.19 19:59 #53 では、どのようにテストしたのですか?また、効果がないのにどうやって利益を示すのでしょうか?また、どのように機能しないのでしょうか?雑誌には何が掲載されているのですか?テスターでテストされたのですか?それともオンライン? また、OrdersTotal関数を見て、それが何のためにあり、どのように挿入されているのか...。 例えば、int total=OrdersTotal(); if(total<1) { とします。 igor 2008.03.19 20:05 #54 int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //価格がDeltaポイント以上下がった { ticket=OrderSend(Symbol(,OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green); }. if (iOpen(NULL,5,0)-Bid<Delta*Point) //価格がDeltaポイント以上上がった { ticket=OrderSend(Symbol(,OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green); } }. //---- return(0); }. //+------------------------------------------------------------------------------+ そして、押し付けがましい奴だ、捕まえろ。動作はするけど、アホらしい。 MetaEditorにコピーしないと、また+と-がごちゃごちゃになるよ。 An advisor that would [WARNING CLOSED!] Any newbie OrderSend and stops igor 2008.03.19 20:14 #55 私が理解する限り、問題はハンドルのどこかにあるのですが、どこに問題があるのか...。 以下は、Handleを取得する例です。 int hwnd1 =WindowHandle(Symbol(), Period()); あなたのコードでは、同様のことに気づいていません。 csv」ファイルをExcelで開くと、ロックされて書き込みができなくなるのですが、謎でしょうか? Aleksandr 2008.03.19 20:21 #56 rid: では、どのようにテストしたのですか?また、効果がないのにどうやって利益を示すのでしょうか?また、どのように機能しないのでしょうか?雑誌には何が掲載されているのですか?テスターで、どこでテストしたのですか?それともオンライン? また、OrdersTotal関数を見て、それが何のためにあるのか、どのように挿入されているのか...。 例えば、int total=OrdersTotal(); if(total<1) {とします。 テスターでテスト、他に方法は?:) 利益504、取引回数432、ドローダウン788ドル、7.31%と表示されています。設定でm5をポンドにすると、17/03/08~19/03/08になりました。 そして、チャート上で実行すると、トレードの条件は満たされているのに、Expert Advisorは何もしてくれない......。 Aleksandr 2008.03.19 20:34 #57 zhuki: int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //価格がDeltaポイント以上下落した場合。 { ticket=OrderSend(Symbol()、OP_BUY、0.1、Ask、3、Bid-StopLoss*Point, Ask+TakeProfit*Point, "Bought", MagicNumber, 11111,Green)を送信します。 } if (iOpen(NULL,5,0)-Bid<Delta*Point) //価格がDeltaポイント以上上昇した。 { ticket=OrderSend(Symbol(,OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green)); } //---- return(0)です。 } //+------------------------------------------------------------------+ そして、あなたは頑固者だ、わかってくれ。動作はするけど、アホらしい。 MetaEditorにコピーしないと、また+と-がごちゃごちゃになるよ。 うわあああああああああああああああああああああああああああああああ本当にありがとうございました。効いてますね。 igor 2008.03.19 20:42 #58 GRAALを 完成させたら、せめてアイデアを共有してください。 Aleksandr 2008.03.20 16:37 #59 恥ずかしくて聞けません :))) Expert Advisorが1つの取引だけを開き、それが終了するまで他の取引を開かないようにするにはどうすればよいですか? Alexander Sevastyanov 2008.03.20 17:00 #60 salesman77: 恥ずかしくて聞けません :)))Expert Advisorが1つの取引だけを開き、それが終了するまで他の取引を開かないようにするにはどうすればよいですか? 。 すべてのオープンポジションを 検索し、現在のシンボルとマジックナンバーをチェックするループをアレンジします。何も見つからなければ、緑色のランプを点灯させます。コドベースには、ほとんどすべてのEAで、そのような例がたくさんあります。 1234567891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ごきげんよう。
アドバイスお願いします:ファイルに速やかに履歴を書き込むスクリプトがあるのですが、ファイルを開くと記録が行かないのです...。このスクリプトは、currency_loaderと呼ばれるもので、ご存知の方も多いと思います。
// M1からの履歴 データの読み込み
void LoadingM1(){//1
int MaxBars=MaxBarsInFile;
if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0);}; ArrayM1(ArrayM1);}.
if(ArrSizeM1>1){//2
if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}.
for(i2=1; i2<=Tryes; i2++){//3
h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV)。
if(h1==-1){LastError=GetLastError();Info("1.2",1"," There is error while opening file: "+FileNameM1+" at "+i2+" Try "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1.2",2", "ファイル "+FileNameM1+"のオープンに成功");}。
FileWrite(h1,FirstLine)を実行します。
for (i=MaxBars-1; i>=0; i-- ){//4
if(!USRegionSet){。
CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+""; // バーの日付
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // バーの時間
}
else{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" "; // バーの日付
BarTime=0。
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // 開放価格
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // 高値の場合
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // 安値の場合
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+"; // 終値
FileWrite(h1,CString)。
CString=""です。
}//4
FileClose(h1)です。
LCM1 = iTime(Symbol(),PERIOD_M1,0)とする。
を返します。
}//3
}//2
}//1
私が理解した限りでは、ハンドルに問題があるのですが、どこに問題があるのでしょうか...。
まだダメなのか!!!!
何が原因なのか、わかるように助けてください。
では、どのようにテストしたのですか?また、効果がないのにどうやって利益を示すのでしょうか?また、どのように機能しないのでしょうか?雑誌には何が掲載されているのですか?テスターでテストされたのですか?それともオンライン?
また、OrdersTotal関数を見て、それが何のためにあり、どのように挿入されているのか...。
例えば、int total=OrdersTotal(); if(total<1) { とします。
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //価格がDeltaポイント以上下がった
{
ticket=OrderSend(Symbol(,OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green);
}.
if (iOpen(NULL,5,0)-Bid<Delta*Point) //価格がDeltaポイント以上上がった
{
ticket=OrderSend(Symbol(,OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
} }.
//----
return(0);
}.
//+------------------------------------------------------------------------------+
そして、押し付けがましい奴だ、捕まえろ。動作はするけど、アホらしい。 MetaEditorにコピーしないと、また+と-がごちゃごちゃになるよ。
私が理解する限り、問題はハンドルのどこかにあるのですが、どこに問題があるのか...。以下は、Handleを取得する例です。
int hwnd1 =WindowHandle(Symbol(), Period());
あなたのコードでは、同様のことに気づいていません。
csv」ファイルをExcelで開くと、ロックされて書き込みができなくなるのですが、謎でしょうか?
では、どのようにテストしたのですか?また、効果がないのにどうやって利益を示すのでしょうか?また、どのように機能しないのでしょうか?雑誌には何が掲載されているのですか?テスターで、どこでテストしたのですか?それともオンライン?
また、OrdersTotal関数を見て、それが何のためにあるのか、どのように挿入されているのか...。
例えば、int total=OrdersTotal(); if(total<1) {とします。
利益504、取引回数432、ドローダウン788ドル、7.31%と表示されています。設定でm5をポンドにすると、17/03/08~19/03/08になりました。
そして、チャート上で実行すると、トレードの条件は満たされているのに、Expert Advisorは何もしてくれない......。
int start()
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //価格がDeltaポイント以上下落した場合。
{
ticket=OrderSend(Symbol()、OP_BUY、0.1、Ask、3、Bid-StopLoss*Point, Ask+TakeProfit*Point, "Bought", MagicNumber, 11111,Green)を送信します。
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //価格がDeltaポイント以上上昇した。
{
ticket=OrderSend(Symbol(,OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green));
}
//----
return(0)です。
}
//+------------------------------------------------------------------+
そして、あなたは頑固者だ、わかってくれ。動作はするけど、アホらしい。 MetaEditorにコピーしないと、また+と-がごちゃごちゃになるよ。
Expert Advisorが1つの取引だけを開き、それが終了するまで他の取引を開かないようにするにはどうすればよいですか?
恥ずかしくて聞けません :)))Expert Advisorが1つの取引だけを開き、それが終了するまで他の取引を開かないようにするにはどうすればよいですか? 。
すべてのオープンポジションを 検索し、現在のシンボルとマジックナンバーをチェックするループをアレンジします。何も見つからなければ、緑色のランプを点灯させます。コドベースには、ほとんどすべてのEAで、そのような例がたくさんあります。