[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 539 1...532533534535536537538539540541542543544545546...652 新しいコメント Pazitiv 2012.01.30 21:47 #5381 QQEAというインディケータをベースにEAを書いています。 EAのアイデアは、赤い線が黄色い線と上向きにクロスしたら買い注文を1つ 開き、赤い線が黄色い線と下向きにクロスしたら売り注文を1つ 開くというものです。しかし、1つだけ注文を開くことができません。 条件を満たした場合に限り、注文を受け付けます。はい、そして買い注文だけが開かれます HAYDNT ? // EAコード //--- input parameters extern double MaxRisk=1.0; extern double FixLot = 0.01; extern double Exponent=2.0; extern int Magic = 888; // костыли extern int TakeProfit=100; extern int StopLoss=100; int init() return(0); } int deinit() { //---- //---- return(0); } int start() { //---- int Count=0; double b0,b1; int ticket; // параметры индикатора int SF = 5; // original 5 int RSI_Period = 14; // original 14 double DARFACTOR = 4.236; //original 4.236 //------------ Параметры из индикатора QQEA ----------------------- // Buffer0 -- красная жирная string Buffer0 = iCustom(NULL, 0, "QQEA" , SF, RSI_Period, DARFACTOR,0 , 0); // Buffer1 -- жёлтый пунктир string Buffer1 = iCustom(NULL, 0, "QQEA" , SF, RSI_Period, DARFACTOR,1 , 0); b0=StrToDouble(Buffer0); b1=StrToDouble(Buffer1); double Lot=GetLot(MaxRisk); // если лот <0 выводим сообщение об ошибке if(Lot==0) { Alert("Недостаточно средств!"); return(0); } if (Lot!=0 && b0>b1) // если лот <> 0 и красная выше жёлтой { ticket=NewOrder(OP_BUY,Lot); if (ExistOrders(Symbol(), 1, 888, 0) == true ) // проверяем наличие ордера sell { CloseOrder(); } } if (Lot!=0 && b0<b1) // если лот <> 0 и красная выше жёлтой { ticket=NewOrder(OP_SELL,Lot); if (ExistOrders(Symbol(), 0, 888, 0) == true ) // проверяем наличие ордера buy { CloseOrder(); } } Comment("Red line: ",b0,"Yellow line: ",b1); return(0); } //------------------------------------------------------------- //расчёт лота double GetLot(int Risk) {double Free =AccountFreeMargin(); double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT); double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT); double Step =MarketInfo(Symbol(),MODE_LOTSTEP); double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step; if(Lot<Min_Lot) Lot=Min_Lot; if(Lot>Max_Lot) Lot=Max_Lot; if(Lot*One_Lot>Free) return(0.0); return(Lot);} bool ExistOrders(string sy="", int op=-1, int Magic=-1, datetime ot=0) { int i, k=OrdersTotal(), ty; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ty=OrderType(); if (ty>1 && ty<6) { if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) { if (Magic<0 || OrderMagicNumber()==Magic) { if (ot<=OrderOpenTime()) return(True); } } } } } return(False); } //открытие нового ордера int NewOrder(int Cmd,double Lot) {double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена while(!IsTradeAllowed()) Sleep(100); if(Cmd==OP_BUY) {PR=Ask; if(TakeProfit>0) TP=Ask+TakeProfit*Point; if(StopLoss>0) SL=Ask-StopLoss*Point;} if(Cmd==OP_SELL) {PR=Bid; if(TakeProfit>0) TP=Bid-TakeProfit*Point; if(StopLoss>0) SL=Bid+StopLoss*Point;} int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP," ",0,0,Green); if(tic<0) Print("Ошибка открытия ордера: " ,GetLastError()); return(tic);} // закрытие ордера void CloseOrder() {double PR=0; while(!IsTradeAllowed()) Sleep(100); if(OrderType()==OP_BUY) PR=Bid; if(OrderType()==OP_SELL) PR=Ask; if(!OrderClose(OrderTicket(),OrderLots(),PR,3,Red)) Print("Ошибка закрытия ордера: " ,GetLastError()); return;} ファイル: qqea_1.mq4 4 kb costy_ 2012.01.30 22:42 #5382 PAZITIV: QQEAというインディケータをベースにEAを書いています。 EAのアイデアは、赤い線が黄色い線と上向きにクロスしたら買い注文を1つ 開き、赤い線が黄色い線と下向きにクロスしたら売り注文を1つ 開くというものです。しかし、1つだけ注文を開くことができません。 条件を満たした場合に限り、注文を受け付けます。はい、そして買い注文だけが開かれます HAYDNT ? // EAコード //--- input parameters extern double MaxRisk=1.0; extern double FixLot = 0.01; extern double Exponent=2.0; extern int Magic=888; // костыли extern int TakeProfit=100; extern int StopLoss=100; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { //---- int Count=0; double b0,b1; int ticket; // параметры индикатора int SF=5; // original 5 int RSI_Period=14; // original 14 double DARFACTOR=4.236; //original 4.236 //------------ Параметры из индикатора QQEA ----------------------- // Buffer0 -- красная жирная string Buffer0=iCustom(NULL,0,"QQEA",SF,RSI_Period,DARFACTOR,0,0); // Buffer1 -- жёлтый пунктир string Buffer1=iCustom(NULL,0,"QQEA",SF,RSI_Period,DARFACTOR,1,0); b0=StrToDouble(Buffer0); b1=StrToDouble(Buffer1); double Lot=GetLot(MaxRisk); // если лот <0 выводим сообщение об ошибке if(Lot==0) { Alert("Недостаточно средств!"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(Lot!=0 && b0>b1) // если лот <> 0 и красная выше жёлтой { ticket=NewOrder(OP_BUY,Lot); if(ExistOrders(Symbol(),1,888,0)==true) // проверяем наличие ордера sell { CloseOrder(); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(Lot!=0 && b0<b1) // если лот <> 0 и красная выше жёлтой { ticket=NewOrder(OP_SELL,Lot); if(ExistOrders(Symbol(),0,888,0)==true) // проверяем наличие ордера buy { CloseOrder(); } } Comment("Red line: ",b0,"Yellow line: ",b1); return(0); } //------------------------------------------------------------- //расчёт лота double GetLot(int Risk) { double Free=AccountFreeMargin(); double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT); double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT); double Step=MarketInfo(Symbol(),MODE_LOTSTEP); double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step; if(Lot<Min_Lot) Lot=Min_Lot; if(Lot>Max_Lot) Lot=Max_Lot; if(Lot*One_Lot>Free) return(0.0); return(Lot); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool ExistOrders(string sy="",int op=-1,int Magic=-1,datetime ot=0) { int i,k=OrdersTotal(),ty; if(sy=="0") sy=Symbol(); for(i=0; i<k; i++) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { ty=OrderType(); if(ty>1 && ty<6) { if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) { if(Magic<0 || OrderMagicNumber()==Magic) { if(ot<=OrderOpenTime()) return(True); } } } } } return(False); } //открытие нового ордера int NewOrder(int Cmd,double Lot) { double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена while(!IsTradeAllowed()) Sleep(100); //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(Cmd==OP_BUY) { PR=Ask; if(TakeProfit>0) TP=Ask+TakeProfit*Point; if(StopLoss>0) SL=Ask-StopLoss*Point; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(Cmd==OP_SELL) { PR=Bid; if(TakeProfit>0) TP=Bid-TakeProfit*Point; if(StopLoss>0) SL=Bid+StopLoss*Point; } if(GetOrdersCount(Magic,Cmd)>0)return(0); int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP," ",0,0,Green); if(tic<0) Print("Ошибка открытия ордера: ",GetLastError()); return(tic); } // закрытие ордера void CloseOrder() { double PR=0; while(!IsTradeAllowed()) Sleep(100); if(OrderType()==OP_BUY) PR=Bid; if(OrderType()==OP_SELL) PR=Ask; if(!OrderClose(OrderTicket(),OrderLots(),PR,3,Red)) Print("Ошибка закрытия ордера: ",GetLastError()); return; } //+------------------------------------------------------------------+ // подсчет кол-ва открытых позиций int GetOrdersCount(int MagicNumber,int Type) { int count=0; for(int i=0; i<OrdersTotal(); i++) { // already closed if(OrderSelect(i,SELECT_BY_POS)==false) continue; // not current symbol if(OrderSymbol()!=Symbol()) continue; // order was opened in another way if(OrderMagicNumber()!=MagicNumber) continue; if(OrderType()==Type) { count++; } } return(count); } //------------------------------------------------------- 読みやすいように書くと、後で楽になりますよ。 Victor Nikolaev 2012.01.30 23:39 #5383 PAZITIV:QQEAというインディケータをベースにEAを書いています。 EAのアイデアは、赤い線が黄色い線と上向きにクロスしたら買い注文を1つ 開き、赤い線が黄色い線と下向きにクロスしたら売り注文を1つ 開くというものです。しかし、1つだけ注文を開くことができません。条件を満たした場合に限り、注文を受け付けます。そして、買い注文だけが開かれる。 //EAコード 質問させてください。 文字列型は どのような根拠で使われているのでしょうか? //------------ Параметры из индикатора QQEA ----------------------- // Buffer0 -- красная жирная string Buffer0=iCustom(NULL,0,"QQEA",SF,RSI_Period,DARFACTOR,0,0); // Buffer1 -- жёлтый пунктир string Buffer1=iCustom(NULL,0,"QQEA",SF,RSI_Period,DARFACTOR,1,0); 削除済み 2012.01.31 07:46 #5384 double diMA60=iMA(NULL,60,Period_indikatora1,0,Mod_MA,PRICE_CLOSE,sdvig); double diMA30=iMA(NULL,30,Period_indikatora2,0,Mod_MA,PRICE_CLOSE,sdvig) 男 EAは2つの異なるタイムフレーム(30と60)を使用して、テスターに置くためにどのような期間を教えて、そしてEAのテスト期間は変更されませんでしょうか? Рустам 2012.01.31 09:18 #5385 最小値以下でないこと(例:M30 削除済み 2012.01.31 09:36 #5386 これらのログは何を意味しているのでしょうか。 2012.01.31 14:34:45 Memory handler: cannot allocate 10436536 bytes of memory. 2012.01.31 14:34:45:45 HistoryBase: not enough memory 'EURGBP1' [206996 bars]. ?不具合があった場合、修正することは可能ですか? gince 2012.01.31 10:30 #5387 アレイのお手伝い思い通りにならないんです。 価格配列p[]が存在する。新しい配列を作成する必要があるのですが、その配列の長さは1要素少なく、最初の配列から隣接する2つの要素の差としてカウントされるのです。差がマイナスなら-1倍する。 p [6]={1、5、9、4、6、2、3}が存在する。 を取得する必要があります。 p_diff[5] = {-1*(1-5), -1*(5-9), 9-4, -1*(4-6), 6-2, -1*(2-3)} すなわち p_diff[5] = {4, 4, 5, 2, 4, 1} となる。 int start() { if( !NewBar() ) return(0); int i, n, k, j = 0; for(i=0; i<=Bars_count; i++) { ZZ[i]=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i); if(ZZ[i]!=0) { Print(ZZ[j]); j = j + 1; k = j - 1; Print("index = ",k); } } Print("iiii = ", k); for(n = 0; n <= k-1; n++) { ZZ_diff[n] = (ZZ[n] -ZZ[n+1]); if(ZZ_diff[n] < 0) ZZ_diff[n] = ZZ_diff[n] * (-1); Print(ZZ_diff[n], " index diff = ", n); } return(0); } costy_ 2012.01.31 12:28 #5388 -Aleksey-: これらのログは何を意味しているのでしょうか。 2012.01.31 14:34:45 Memory handler: cannot allocate 10436536 bytes of memory. 2012.01.31 14:34:45:45 HistoryBase: not enough memory 'EURGBP1' [206996 bars]. ?不具合があった場合、修正することは可能ですか? RAMの容量を増やし、ウィンドウのバーの最大値を小さくする。 costy_ 2012.01.31 12:31 #5389 gince:アレイのお手伝い思い通りにならないんです。価格配列p[]が存在する。新しい配列を作成する必要があるのですが、その配列の長さは1要素少なく、最初の配列から隣接する2つの要素の差としてカウントされるのです。差がマイナスなら-1倍する。p [6]={1、5、9、4、6、2、3}が存在する。 を取得する必要があります。p_diff[5] = {-1*(1-5), -1*(5-9), 9-4, -1*(4-6), 6-2, -1*(2-3)} すなわち p_diff[5] = {4, 4, 5, 2, 4, 1} となる。 doubleMathAbs() 倍精度) この関数は,渡された数値の絶対値(モジュロ値)を返します。 ZZ_diff[n] = MathAbs(ZZ[n] -ZZ[n+1]); Рустам 2012.01.31 12:36 #5390 double zz_arr[1000]; double preZz=0; int i,ii; for(i=5000;i>=0;i--){ double zz = iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i); if(zz!=0){ if(preZz==0){preZz=zz;continue;} zz_arr[ii]=MathAbs(zz-preZz); preZz=zz; ii++; } } ArrayResize(zz_arr,ii); 1...532533534535536537538539540541542543544545546...652 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
QQEAというインディケータをベースにEAを書いています。 EAのアイデアは、赤い線が黄色い線と上向きにクロスしたら買い注文を1つ 開き、赤い線が黄色い線と下向きにクロスしたら売り注文を1つ 開くというものです。しかし、1つだけ注文を開くことができません。 条件を満たした場合に限り、注文を受け付けます。はい、そして買い注文だけが開かれます HAYDNT ?
//
EAコード
QQEAというインディケータをベースにEAを書いています。 EAのアイデアは、赤い線が黄色い線と上向きにクロスしたら買い注文を1つ 開き、赤い線が黄色い線と下向きにクロスしたら売り注文を1つ 開くというものです。しかし、1つだけ注文を開くことができません。 条件を満たした場合に限り、注文を受け付けます。はい、そして買い注文だけが開かれます HAYDNT ?
//
EAコード
QQEAというインディケータをベースにEAを書いています。 EAのアイデアは、赤い線が黄色い線と上向きにクロスしたら買い注文を1つ 開き、赤い線が黄色い線と下向きにクロスしたら売り注文を1つ 開くというものです。しかし、1つだけ注文を開くことができません。条件を満たした場合に限り、注文を受け付けます。そして、買い注文だけが開かれる。
//
EAコード
質問させてください。
文字列型は どのような根拠で使われているのでしょうか?
男 EAは2つの異なるタイムフレーム(30と60)を使用して、テスターに置くためにどのような期間を教えて、そしてEAのテスト期間は変更されませんでしょうか?
これらのログは何を意味しているのでしょうか。
2012.01.31 14:34:45 Memory handler: cannot allocate 10436536 bytes of memory.
2012.01.31 14:34:45:45 HistoryBase: not enough memory 'EURGBP1' [206996 bars].
?不具合があった場合、修正することは可能ですか?
アレイのお手伝い思い通りにならないんです。
価格配列p[]が存在する。新しい配列を作成する必要があるのですが、その配列の長さは1要素少なく、最初の配列から隣接する2つの要素の差としてカウントされるのです。差がマイナスなら-1倍する。
p [6]={1、5、9、4、6、2、3}が存在する。
を取得する必要があります。
p_diff[5] = {-1*(1-5), -1*(5-9), 9-4, -1*(4-6), 6-2, -1*(2-3)} すなわち p_diff[5] = {4, 4, 5, 2, 4, 1} となる。
これらのログは何を意味しているのでしょうか。
2012.01.31 14:34:45 Memory handler: cannot allocate 10436536 bytes of memory.
2012.01.31 14:34:45:45 HistoryBase: not enough memory 'EURGBP1' [206996 bars].
?不具合があった場合、修正することは可能ですか?
アレイのお手伝い思い通りにならないんです。
価格配列p[]が存在する。新しい配列を作成する必要があるのですが、その配列の長さは1要素少なく、最初の配列から隣接する2つの要素の差としてカウントされるのです。差がマイナスなら-1倍する。
p [6]={1、5、9、4、6、2、3}が存在する。
を取得する必要があります。
p_diff[5] = {-1*(1-5), -1*(5-9), 9-4, -1*(4-6), 6-2, -1*(2-3)} すなわち p_diff[5] = {4, 4, 5, 2, 4, 1} となる。
この関数は,渡された数値の絶対値(モジュロ値)を返します。