どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 328 1...321322323324325326327328329330331332333334335...1178 新しいコメント [Удален] 2013.12.09 18:39 #3271 double GetLastUpperFractalPrice() { for (int i = 3; i<=Bars; i++) if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i); double LastUpperFractalPrice = High [i]; return (LastUpperFractalPrice); }ということでよろしいでしょうか?この関数は、最後の上段フラクタルの 価格を返すのでしょうか? Vitalie Postolache 2013.12.09 18:49 #3272 Trader7777: ということでよろしいでしょうか?この関数は、最後の上段フラクタルの価格を返すのでしょうか? フラクタル探索の例 [Удален] 2013.12.09 18:53 #3273 double GetLastUpperFractalPrice() { for (int i = 3; i<=Bars; i++) { if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i); { double LastUpperFractalPrice = High [i]; } } return (LastUpperFractalPrice); }これはうまくいくのか、いかないのか? Alexey Subbotin 2013.12.09 18:56 #3274 Trader7777: double GetLastUpperFractalPrice() { for (int i = 3; i<=Bars; i++) { if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) { double LastUpperFractalPrice = High [i]; } } return (LastUpperFractalPrice;) } これはうまくいくのか、いかないのか? だから、たとえば、そうなる。 double GetLastUpperFractalPrice() { for (int i = 3; i<=Bars; i++) { if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) { return(High [i]); } } return(EMPTY_VALUE); } あなたが持っているように、それはないでしょう。 Sergey Dzyublik 2013.12.09 19:01 #3275 Trader7777: double GetLastUpperFractalPrice() { for (int i = 3; i<=Bars; i++) { if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i); { double LastUpperFractalPrice = High [i]; } } return (LastUpperFractalPrice); }うまくいくのか、いかないのか。 いいえ、パネル内のSRCから コードを挿入してください。 return (ХХ)は、ユーザー関数から返します - そこで入力されたものがこの関数によって返されます - ХХХの値、またはいくつかの計算関数の結果です。 ですから、フラクタルが見つかったら、return (High [i]) と書けば、i番目のバーの最高値が 出力されます - 他に何も工夫する必要はありません。 よくぞ言ってくれました)) 削除済み 2013.12.09 20:05 #3276 これは保留注文の初歩的な機能で、パラメータは重要ではありませんが、Expert Advisor(保留注文の既存のループを使用できます)が「新しい価格」を受け取った後、またはそれを検索するために、または何とか同じ価格での注文を配置しないようにすることが重要です。この場合、注文を出すループが止まってはいけない。 double Dist=10000. 文字列のSMB。 double NewPrice; int i; int start() { RefreshRates()。 SMB=Symbol()です。 {UstanOtlozh();}。 } return(0)です。 void UstanOtlozh() { double OldPrice=WindowPriceOnDropped(); // ここでスクリプトがスローされます。 RefreshRates()。 SMB=Symbol()です。 { int i=1; while(i<=OrdersTotal()の場合) { if (OrderSelect(i-1,SELECT_BY_POS)==true) // がある場合。 { // オーダー解析。 if (OrderSymbol()!= SMB) continue; // 私たちの金融商品ではありません。 int Tip=OrderType(); // オーダータイプ if (Tip<2) continue; // 成行注文 double NewPrice=OrderOpenPrice(); // 注文価格 { while(NewPrice<=Ask+200*Point||NewPrice>=Ask+50*Point)とする。 { NewPrice=NewPrice+50*ポイント。 OrderSend(SMB,OP_BUYSTOP,0.01,NewPrice,3,0,NULL,0,CLR_NONE)を実行。 if(NewPrice>Ask+200*Point||NewPrice<Ask+50*Point)。 が壊れる。 }}}}}} [ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. [アーカイブ】お金になる村人の作り方を学ぼう! Any rookie question, so Alexey Semenov 2013.12.09 20:39 #3277 ALXIMIKS: MT4 EDITORの555ビルドをコンパイルして使用するように修正しました。まさかこんな単純なことを聞くとは思わなかった。コンパイル時に、BU()関数が関係ないとのメッセージが出ます。私はこのようにしました(コードは与えられている)今はすべてがコンパイルされますが、ブレークイーブン関数が動作しません。他のEAでも同じようなBreakevenの機能を見たことがあります。 int start() { if(Volume[0]>1) return; if (CountTrades()==0 && Open[1]>Close[1] && Open[2]<Close[2] && High[1]>High[2] && Low[1]<Low[2]) // продажа { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Pattern_1",111,0,Red); if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) { TP=NormalizeDouble(Bid - TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(),0,TP,0); } } else if (CountTrades()==0 && Open[1]<Close[1] && Open[2]>Close[2] && High[1]>High[2] && Low[1]<Low[2]) // покупка { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Pattern_1",111,0,Blue); if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) { TP=NormalizeDouble(Ask + TakeProfit * Point, Digits); OrderModify(ticket, OrderOpenPrice(),0,TP,0); } } if (CountTrades()>0) { otype = FindLastOrderType(); if (otype == OP_BUY) { // ценапоследнего ордера на покупку price = FindLastBayPrice(); if ((Bid - price) / Point >= Step) { ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid,Slippage,0,0,"Pattern_1",111,0,Red); } } else if (otype == OP_SELL) { // цена последнего ордера на продажу price = FindLastSellPrice(); if ((price - Ask) / Point >= Step) { ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask,Slippage,0,0,"Pattern_1",111,0,Blue); } } } BU(); return(0); } Алексей Тарабанов 2013.12.09 21:25 #3278 alexey1979621: まさかこんな単純なことを聞くとは思わなかった。コンパイル時に、BU()関数が関係ないとのメッセージが出ます。私はこのようにしました(コードは与えられている)今はすべてがコンパイルされますが、ブレークイーブン関数が動作しません。他のEAでも、全く同じ損益分岐関数が働きます。 唯一の理由は、不正確な if(...) 演算子 return; が、プログラムの最初に1つだけあるようです。 Artyom Trishkin 2013.12.09 21:44 #3279 諸君!!!あなた方は何を勘違いしているのですか? iFractals() はフラクタルのバー番号ではなく、価格を 返します。 Alexey Semenov 2013.12.09 21:56 #3280 tara: 唯一の理由は、if(...)演算子のreturnが正しくないことです; プログラム冒頭にあるようです。 こちらは削除されました。しかし、問題は別のところ、つまり正規化にあるのです。なぜかExpert Advisorは小数点以下が5桁ではなく4桁で表示されています。 extern double Lots = 0.1; extern string Сomment = "Pattern_1"; extern int TakeProfit = 10; extern int StopLoss = 0; extern int Step = 2; extern int BULevel = 2; extern int NotBULevel = 2; // Уровень безубытка в пунктах extern int Slippage = 2; // проскальзывание extern int Magic = 111; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (Digits ==5) // для пятизначного брокера { TakeProfit *= 10; StopLoss *= 10; Slippage *= 10; Step *= 10; BULevel *= 10; NotBULevel *= 10; } return(0); } どうすれば直るのか? 1...321322323324325326327328329330331332333334335...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
{
for (int i = 3; i<=Bars; i++)
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i);
double LastUpperFractalPrice = High [i]; return (LastUpperFractalPrice);
}
ということでよろしいでしょうか?この関数は、最後の上段フラクタルの 価格を返すのでしょうか?
ということでよろしいでしょうか?この関数は、最後の上段フラクタルの価格を返すのでしょうか?
フラクタル探索の例
{
for (int i = 3; i<=Bars; i++)
{
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i);
{
double LastUpperFractalPrice = High [i];
}
}
return (LastUpperFractalPrice);
}
これはうまくいくのか、いかないのか?
double GetLastUpperFractalPrice()
{
for (int i = 3; i<=Bars; i++)
{
if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0)
{
double LastUpperFractalPrice = High [i];
}
}
return (LastUpperFractalPrice;)
}
これはうまくいくのか、いかないのか?
だから、たとえば、そうなる。
あなたが持っているように、それはないでしょう。
double GetLastUpperFractalPrice() { for (int i = 3; i<=Bars; i++) { if (iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) != 0) return (i); { double LastUpperFractalPrice = High [i]; } } return (LastUpperFractalPrice);
}
うまくいくのか、いかないのか。
いいえ、パネル内のSRCから コードを挿入してください。
return (ХХ)は、ユーザー関数から返します - そこで入力されたものがこの関数によって返されます - ХХХの値、またはいくつかの計算関数の結果です。
ですから、フラクタルが見つかったら、return (High [i]) と書けば、i番目のバーの最高値が 出力されます - 他に何も工夫する必要はありません。
よくぞ言ってくれました))
これは保留注文の初歩的な機能で、パラメータは重要ではありませんが、Expert Advisor(保留注文の既存のループを使用できます)が「新しい価格」を受け取った後、またはそれを検索するために、または何とか同じ価格での注文を配置しないようにすることが重要です。この場合、注文を出すループが止まってはいけない。
double Dist=10000.
文字列のSMB。
double NewPrice;
int i;
int start()
{
RefreshRates()。
SMB=Symbol()です。
{UstanOtlozh();}。
}
return(0)です。
void UstanOtlozh()
{
double OldPrice=WindowPriceOnDropped(); // ここでスクリプトがスローされます。
RefreshRates()。
SMB=Symbol()です。
{
int i=1;
while(i<=OrdersTotal()の場合)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // がある場合。
{ // オーダー解析。
if (OrderSymbol()!= SMB) continue; // 私たちの金融商品ではありません。
int Tip=OrderType(); // オーダータイプ
if (Tip<2) continue; // 成行注文
double NewPrice=OrderOpenPrice(); // 注文価格
{
while(NewPrice<=Ask+200*Point||NewPrice>=Ask+50*Point)とする。
{
NewPrice=NewPrice+50*ポイント。
OrderSend(SMB,OP_BUYSTOP,0.01,NewPrice,3,0,NULL,0,CLR_NONE)を実行。
if(NewPrice>Ask+200*Point||NewPrice<Ask+50*Point)。
が壊れる。
}}}}}}
MT4 EDITORの555ビルドをコンパイルして使用するように修正しました。
まさかこんな単純なことを聞くとは思わなかった。コンパイル時に、BU()関数が関係ないとのメッセージが出ます。私はこのようにしました(コードは与えられている)今はすべてがコンパイルされますが、ブレークイーブン関数が動作しません。他のEAでも同じようなBreakevenの機能を見たことがあります。
まさかこんな単純なことを聞くとは思わなかった。コンパイル時に、BU()関数が関係ないとのメッセージが出ます。私はこのようにしました(コードは与えられている)今はすべてがコンパイルされますが、ブレークイーブン関数が動作しません。他のEAでも、全く同じ損益分岐関数が働きます。
唯一の理由は、不正確な if(...) 演算子 return; が、プログラムの最初に1つだけあるようです。
諸君!!!あなた方は何を勘違いしているのですか?
iFractals() はフラクタルのバー番号ではなく、価格を 返します。
唯一の理由は、if(...)演算子のreturnが正しくないことです; プログラム冒頭にあるようです。