[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 274 1...267268269270271272273274275276277278279280281...432 新しいコメント Alekseu Fedotov 2013.04.08 14:28 #2731 CYBOPOB: まあ、人間的に書かれていればいいのですが...最初のうちは全てがクリアに見えるのですが、少し経つと訳が分からなくなってきます...(笑)。O.K.具体的な例です。 TPの移動が終了した時点で注文は終了しますが、SELLシグナルがキャンセルされていないため、新たな注文が開設され、これは受け入れがたいものです。720秒を計測し、その後、新しい注文を開けることができます。では、この場合、この秒数は履歴の最初の順番と最後の順番、どちらから計測するのでしょうか?そして、もしそうなら、どうするのか。Iプラスzなので、最初から数えるように出てくる?Brrrr:))ありがとうございました。 この関数は、最後にポジションを閉じてからの秒数を返します。 gince 2013.04.08 14:38 #2732 配列の長さが変わる、から見ています。2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15: ArraySize 21 しかし、すべての要素がゼロとして配列に書き込まれている。2013.04.08 19:06:04 2013.03.28 16:00 testavimas naktini fleta EURUSD,M15: avgPriceC[19]=0.00000000 つまりこの行には配列要素に Close[1] 値が代入されていないのです。 avgPriceC[i] = Close[1]; その理由を説明できる人。 Валерий 2013.04.08 14:42 #2733 r772ra: この関数は、最後のポジションが閉じられてからの秒数を返します。 ありがとうございます:) gince 2013.04.08 16:01 #2734 ヘルプインターリーブ変数で試しましたが、うまくいきませんでした。ArrayResizeは 配列の後に置かれました。結果は同じです。配列の中にゼロがある。 int start() { double volMA11, volMA12, volMA21, volMA22; double x[], y[]; Print("******************STARTAS*****************************************"); if(!TF_F_NewBar())return(0); volMA11 = iCustom(NULL, 15, "volumeMA", 2, 1); volMA12 = iCustom(NULL, 15, "volumeMA", 2, 2); volMA21 = iCustom(NULL, 15, "volumeMA", 3, 1); volMA22 = iCustom(NULL, 15, "volumeMA", 3, 2); double h = High[1]; double l = Low[1]; double o = Open[1]; double c = NormalizeDouble(iClose(NULL, 0, 1),Digits); if(DayOfWeek()==1 || DayOfWeek()==2 || DayOfWeek()==3 || DayOfWeek()==4) //jei pirmadienis antradienis ar treciadienis, ar ketvirtadienis { if(TimeCurrent()>= StrToTime(startstartFlatMA) && TimeCurrent()<= StrToTime(endstartFlatMA)+24*60*60) { //Print("fleto starto ieskojimo laikas prasidejo "+TimeToStr(TimeCurrent())+" >= "+TimeToStr(StrToTime(startstartFlatMA))+ //" && "+TimeToStr(TimeCurrent())+" <= "+TimeToStr(StrToTime(endstartFlatMA)+24*60*60)); bool laikas = true; Print("laikas = "+laikas); if(volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0) { //jei buvo susikirtimas susikirtimas = true; } if(susikirtimas == true) { if(zvakes_pabaiga) { if(iTime(NULL, BarEnd, 1)!= LastTime) { LastTime = iTime(NULL, BarEnd, 1); flat = true; LastTime = iTime(NULL, BarEnd, 1); } else return(0); } else flat = true; if(flat == true) { i++; avgPriceH[i] = h; avgPriceL[i] = l; avgPriceO[i] = o; avgPriceC[i] = c; j++; ArrayResize(chPriceC,j); ArrayResize(chTime,j); } ArrayResize(avgPriceH,i); ArrayResize(avgPriceL,i); ArrayResize(avgPriceO,i); ArrayResize(avgPriceC,i); Print("ArraySize "+ArraySize(avgPriceC)); for(int a=0; a<=i; a++)Print("avgPriceC["+a+"]="+avgPriceC[a]); for(int b=0; b<=j; b++)Print("chPriceC["+b+"]="+chPriceC[b]); for( b=0; b<=j; b++)Print("chTime["+b+"]="+chTime[b]); } } } return(0); } はV.272でスタートします。 Alexey Subbotin 2013.04.08 17:26 #2735 gince:ヘルプ中間変数で試しましたが、うまくいきませんでした。ArrayResizeは 配列の後に置かれました。結果は同じです。配列の中にゼロがある。 v.272で始まる あなたのコードには、int i の文字列とインデックスの初期化が見当たりません。スタジオに文字列を提出してください。 ZZY 私はリトアニア語がよくわからないので、コードのコメントで少し混乱しています))) gince 2013.04.08 17:38 #2736 alsu: int iの文字列とインデックスの初期化が見えません。スタジオでお願いします。 ZZY 私はリトアニア語がよくわからないので、コードのコメントにはちょっと戸惑いました))) //+------------------------------------------------------------------+ //| naktinis fletas.mq4 | //| Ñåðãåé (urdala) Ðàøåâñêèé | //| gintaraitis@gmail.com | //+------------------------------------------------------------------+ #property copyright "Ñåðãåé (urdala) Ðàøåâñêèé" #property link "gintaraitis@gmail.com" //greitas MA extern int MA_Period1 = 8; extern int plius1 = 100; extern int MA_Shift1 = 0; extern int MA_Method1 = 0; //Letas MA extern int MA_Period2 = 13; extern int plius2 = 100; extern int MA_Shift2 = 0; extern int MA_Method2 = 3; //Fleto pradzia //fleto ipradzios eskojimas pagal indikatoriu arba laika extern bool start = true; // true ->pagal indikatoriu, false->pagal laika // pagal indikatoriu fleto pradzios pradesim ieskoti nuo sio laiko extern int startHourFlatMA = 16; extern int startMinFlatMA = 00; extern string startstartFlatMA = "16:00"; extern string endstartFlatMA = "00:00"; //suradus pagal indikatoriu dar lauksim kol uzsidarys BarEnd zvake extern bool zvakes_pabaiga = true;//ar lauksim kol uzsidarys M240 zvake, ar priimsim kad fletas prasidejo nuo susikirtimo extern int BarEnd = 240; datetime LastTime; //datetime startTime; // pagal laika fleto pradzios pradesim ieskoti nuo sio laiko extern int startHourFlat = 0; // extern int startMinFlat = 0; // //fleto pabaiga //Fleto pabaiga jei indikatorius duoda signala siame laiko tarpe //Laiko tarpo pradzia extern int startHourEnd = 4; extern int startMinEnd = 45; //laiko tarpo pabaiga arba fleto pabaiga extern int endHourEnd = 7; extern int endMinEnd = 30; //Ar naudosom Volumes filtra extern bool volFiltr = true; //true -> naudosim, false -> nanaudosim //skirtumas tarp penktadienio uzdarymo ir pirmadienio atidarymo extern int gep = 300; //Naktinio-fletinio pipsavimo ijungimas bool nightFlat = false; //true -> ijungtas, false -> neijungtas bool susikirtimas = false; bool flat; //masyvai double chPriceH[], chPriceL[], chPriceO[], chPriceC[], chTime[]; double avgPriceH[], avgPriceL[], avgPriceO[], avgPriceC[]; int i = -1; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0 int j = -1; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0 int n = -1; // kintamasis naujo masyvo indeksacijai int iH, iL ,iO, iC, iT; double C[], T[], y[]; double max; //max skirtumas tarp LR median ir Close //*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*--*-*--*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-* int init () { ArrayResize(chPriceH, 0); ArrayResize(chPriceL, 0); ArrayResize(chPriceO, 0); ArrayResize(chPriceC, 0); ArrayResize(chTime, 0); ArrayResize(avgPriceH, 0); ArrayResize(avgPriceL, 0); ArrayResize(avgPriceO, 0); ArrayResize(avgPriceC, 0); ArrayResize (C, 0); ArrayResize (T, 0); ArrayResize (y, 0); } //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-**-*-*-*-*-*-*-*-*-*- int start() { double volMA11, volMA12, volMA21, volMA22; double x[], y[]; Print("******************STARTAS*****************************************"); if(!TF_F_NewBar())return(0); volMA11 = iCustom(NULL, 15, "volumeMA", 2, 1); volMA12 = iCustom(NULL, 15, "volumeMA", 2, 2); volMA21 = iCustom(NULL, 15, "volumeMA", 3, 1); volMA22 = iCustom(NULL, 15, "volumeMA", 3, 2); if(DayOfWeek()==1 || DayOfWeek()==2 || DayOfWeek()==3 || DayOfWeek()==4) //jei pirmadienis antradienis ar treciadienis, ar ketvirtadienis { if(TimeCurrent()>= StrToTime(startstartFlatMA) && TimeCurrent()<= StrToTime(endstartFlatMA)+24*60*60) { //Print("fleto starto ieskojimo laikas prasidejo "+TimeToStr(TimeCurrent())+" >= "+TimeToStr(StrToTime(startstartFlatMA))+ //" && "+TimeToStr(TimeCurrent())+" <= "+TimeToStr(StrToTime(endstartFlatMA)+24*60*60)); bool laikas = true; Print("laikas = "+laikas); if(volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0) { //jei buvo susikirtimas susikirtimas = true; } if(susikirtimas == true) { if(zvakes_pabaiga) { if(iTime(NULL, BarEnd, 1)!= LastTime) { LastTime = iTime(NULL, BarEnd, 1); flat = true; LastTime = iTime(NULL, BarEnd, 1); } else return(0); } else flat = true; if(flat == true) { i++; //Zinodami indekso eiles numeri galim keisti masyvo ilgi ArrayResize(avgPriceH,i); ArrayResize(avgPriceL,i); ArrayResize(avgPriceO,i); ArrayResize(avgPriceC,i); Print("ArraySize "+ArraySize(avgPriceC)); //jei fletas prasidejo renkam duomenis i masyva zvakiu HL ir OC skaiciavimui avgPriceH[i] = High[1]; avgPriceL[i] = Low[1]; avgPriceO[i] = Open[1]; avgPriceC[i] = Close[1]; j++; ArrayResize(chPriceC,i); ArrayResize(chTime,i); } for(int a=0; a<=i; a++)Print("avgPriceC["+a+"]="+avgPriceC[a]); for(int b=0; b<=j; b++)Print("chPriceC["+b+"]="+chPriceC[b]); for(int c=0; c<=j; c++)Print("chTime["+c+"]="+chTime[c]); } } } return(0); } //----------------------------------------------------------------- bool TF_F_NewBar() { static datetime TimeLast; if(TimeLast!=Time[0]) { TimeLast=Time[0]; return(true); } return(false); } Алексей Тарабанов 2013.04.08 18:01 #2737 gince: 配列y[]をグローバルとスタート関数の2回宣言していますね。 gince 2013.04.08 18:11 #2738 tara: 配列y[]をグローバルとスタート関数の2回宣言していますね。 KIMの例でも#define r 30 void start() { double x[r], y[]; for (int i=0; i<r; i++) x[i]=Close[i+1]; ArrayLR(x, y); for (i=0; i<r; i++) SetArrow(170, Red, "arr"+i, Time[i+1], y[i]); } //+----------------------------------------------------------------------------+ //| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Âåðñèÿ : 20.05.2008 | //| Îïèñàíèå : Ôîðìèðóåò ìàññèâ çíà÷åíèé ëèíåéíîé ðåãðåññèè. | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| x - ìàññèâ çíà÷åíèé ÷èñëîâîãî ðÿäà | //| y - ìàññèâ çíà÷åíèé ëèíåéíîé ðåãðåññèè | //+----------------------------------------------------------------------------+ void ArrayLR(double& x[], double& y[]) { double a, b, c, sx=0, sx2=0, sxy=0, sy=0; int i, n=ArraySize(x); if (n>1) { for (i=0; i<n; i++) { sx+=i+1; sy+=x[i]; sxy+=(i+1)*x[i]; sx2+=(i+1)*(i+1); } a=sx*sy-n*sxy; c=sx*sx-n*sx2; if (c!=0) a=a/c; else a=0; b=(sy-a*sx)/n; ArrayResize(y, n); for (i=0; i<n; i++) y[i]=a*(i+1)+b; } else Print("ArrayLR(): Íåäîñòàòî÷íîå êîëè÷åñòâî ýëåìåíòîâ ðÿäà! n=", n); } //+----------------------------------------------------------------------------+ //| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Âåðñèÿ : 12.10.2007 | //| Îïèñàíèå : Óñòàíîâêà çíà÷êà íà ãðàôèêå | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| cd - êîä çíà÷êà | //| cl - öâåò çíà÷êà | //| nm - íàèìåíîâàíèå ("" - âðåìÿ îòêðûòèÿ òåêóùåãî áàðà) | //| t1 - âðåìÿ îòêðûòèÿ áàðà (0 - òåêóùèé áàð) | //| p1 - öåíîâîé óðîâåíü (0 - Bid) | //| sz - ðàçìåð çíà÷êà (0 - ïî óìîë÷àíèþ) | //+----------------------------------------------------------------------------+ void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) { if (nm=="") nm=DoubleToStr(Time[0], 0); if (t1<=0) t1=Time[0]; if (p1<=0) p1=Bid; if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0); ObjectSet(nm, OBJPROP_TIME1 , t1); ObjectSet(nm, OBJPROP_PRICE1 , p1); ObjectSet(nm, OBJPROP_ARROWCODE, cd); ObjectSet(nm, OBJPROP_COLOR , cl); ObjectSet(nm, OBJPROP_WIDTH , sz); } //+----------------------------------------------------------------------------+ Алексей Тарабанов 2013.04.08 18:22 #2739 gince: KIMの例では、また タクシーがいい?それとも乗っていく? Алексей Тарабанов 2013.04.08 18:25 #2740 まったく同じではなく、まったく違う。グローバルおよびローカルデータ 続きを読む 1...267268269270271272273274275276277278279280281...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まあ、人間的に書かれていればいいのですが...最初のうちは全てがクリアに見えるのですが、少し経つと訳が分からなくなってきます...(笑)。
O.K.具体的な例です。
TPの移動が終了した時点で注文は終了しますが、SELLシグナルがキャンセルされていないため、新たな注文が開設され、これは受け入れがたいものです。
720秒を計測し、その後、新しい注文を開けることができます。では、この場合、この秒数は履歴の最初の順番と最後の順番、どちらから計測するのでしょうか?
そして、もしそうなら、どうするのか。Iプラスzなので、最初から数えるように出てくる?Brrrr:))
ありがとうございました。
この関数は、最後にポジションを閉じてからの秒数を返します。
配列の長さが変わる、から見ています。
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15: ArraySize 21
しかし、すべての要素がゼロとして配列に書き込まれている。
2013.04.08 19:06:04 2013.03.28 16:00 testavimas naktini fleta EURUSD,M15: avgPriceC[19]=0.00000000
つまりこの行には配列要素に Close[1] 値が代入されていないのです。
avgPriceC[i] = Close[1];
その理由を説明できる人。この関数は、最後のポジションが閉じられてからの秒数を返します。
ありがとうございます:)
ヘルプ
インターリーブ変数で試しましたが、うまくいきませんでした。ArrayResizeは 配列の後に置かれました。結果は同じです。配列の中にゼロがある。
はV.272でスタートします。ヘルプ
中間変数で試しましたが、うまくいきませんでした。ArrayResizeは 配列の後に置かれました。結果は同じです。配列の中にゼロがある。
v.272で始まるあなたのコードには、int i の文字列とインデックスの初期化が見当たりません。スタジオに文字列を提出してください。
ZZY 私はリトアニア語がよくわからないので、コードのコメントで少し混乱しています)))
int iの文字列とインデックスの初期化が見えません。スタジオでお願いします。
ZZY 私はリトアニア語がよくわからないので、コードのコメントにはちょっと戸惑いました)))
配列y[]をグローバルとスタート関数の2回宣言していますね。
配列y[]をグローバルとスタート関数の2回宣言していますね。
KIMの例でも
KIMの例では、また
タクシーがいい?それとも乗っていく?