どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 146 1...139140141142143144145146147148149150151152153...1178 新しいコメント Viktar Dzemikhau 2013.09.16 05:51 #1451 私は通常、注文を別の機能で送ります。これを最適化し、1つの関数で保留と成行注文の両方を送信できるようにしたいのです。 どうすれば正しく実装できるのか、アドバイスをお願いします。 注文を 出す際には、始値が買値の上(下)にあることを確認し、その他の点も考慮する必要があります。 他の人はどうしているのか見てみましょう。金さんが使った最もシンプルなバリエーションで考えてみよう。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 21.03.2008 | //| Описание : Открывает позицию и возвращает её тикет. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ int OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; datetime ot; double pp, pa, pb; int dg, err, it, ticket=0; string lsComm=WindowExpertName()+" "+GetNameTF(Period()); if (sy=="" || sy=="0") sy=Symbol(); if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell; for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) { Print("OpenPosition(): Остановка работы функции"); break; } while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); dg=MarketInfo(sy, MODE_DIGITS); pa=MarketInfo(sy, MODE_ASK); pb=MarketInfo(sy, MODE_BID); if (op==OP_BUY) pp=pa; else pp=pb; pp=NormalizeDouble(pp, dg); ot=TimeCurrent(); ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen); if (ticket>0) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy); // Вывод сообщения об ошибке Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it); Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op), " pp=",pp," sl=",sl," tp=",tp," mn=",mn); // Блокировка работы советника if (err==2 || err==64 || err==65 || err==133) { gbDisabled=True; break; } // Длительная пауза if (err==4 || err==131 || err==132) { Sleep(1000*300); break; } if (err==128 || err==142 || err==143) { Sleep(1000*66.666); if (ExistPositions(sy, op, mn, ot)) { if (UseSound) PlaySound(NameFileSound); break; } } if (err==140 || err==148 || err==4110 || err==4111) break; if (err==141) Sleep(1000*100); if (err==145) Sleep(1000*17); if (err==146) while (IsTradeContextBusy()) Sleep(1000*11); if (err!=135) Sleep(1000*7.7); } } return(ticket); } 彼は全く何もチェックしない。この機能は、成行注文を開始するためだけのものであることがわかります。 これは論理的ではないと思うんです。注文を送る場合は、種類を問わない。私の思うように書くと、一見すると長すぎる。 一般論として、これらの点をより良く実現するためのヒントや手助けをお願いしたいのです。 Artyom Trishkin 2013.09.16 07:42 #1452 hoz:私は通常、注文を別の機能で送ります。これを最適化し、1つの関数で保留と成行注文の両方を送信できるようにしたいのです。どうすれば正しく実装できるのか、アドバイスをお願いします。注文を出す際には、始値が買値の上(下)にあることを確認し、その他の点も考慮する必要があります。他の人はどうしているのか見てみましょう。金さんが使った最もシンプルなバリエーションで考えてみよう。彼は全く何もチェックしない。この機能は、成行注文を開始するためだけのものであることがわかります。 これは論理的ではないと思うんです。注文を送る場合は、種類を問わない。私の思うように書くと、一見すると長すぎる。 総じて、これらの点をより良く実装するためのヒントとなるようなことをお聞かせください。さて、イゴールの関数は、まさに関数名で示されたタスクを実行します。すべての調整とチェックは、この関数を呼び出す前に行う必要があります。結局のところ、この関数自体は与えられたタスクを実行するだけで、(関数に)渡されたパラメータでポジションを 開くだけで、それ以上のことはしません。必要なエラー処理も完璧にこなします。何が足りないのか、それは自分で開発することです。 例えて言うなら、お店でインスタントコーヒーを買うと、熱湯と砂糖と他の材料の自動混合がそれに提供されない - 自分でコーヒーを作る方法を知っていた方がいい。 削除済み 2013.09.16 10:03 #1453 みなさん、それは可能ですか?別のループ条件で書き換えてください...。 つまり、素晴らしいbbands_stopというインジケータがあるのです。 for (shift=Nbars-Length-1;shift>=0;shift--) { smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift); smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift); if (Close[shift]>smax[shift+1]) trend=1; if (Close[shift]<smin[shift+1]) trend=-1; bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); if (trend>0) UpTrendBuffer[shift]=bsmin[shift]; else DownTrendBuffer[shift]=bsmax[shift]; } 前回の結果と同じようなコードを書くことは可能でしょうか?しかし、ループのため。 for(i = 0; i <= limit; i++) { 2日目にしてやっと見つけた。 Any rookie question, so BBands_stop_v1用EA。 Chandelier Exit!!! FEAR 2013.09.16 10:27 #1454 皆さんこんにちは!もちろん質問はバカバカしいのですが、1pipを1ドルの価値にするために必要なロットサイズはいくらですか? Mihail Marchukajtes 2013.09.16 10:48 #1455 0.1 PapaYozh 2013.09.16 10:49 #1456 FEAR: こんにちは、もちろん質問は、1ピップが1ドルの価値を持つために、ロットがどのくらい必要なのか、という愚かなものです。 土地の広さによって異なります。 PapaYozh 2013.09.16 10:49 #1457 nikelodeon: 0.1 必ずしもそうではない Mihail Marchukajtes 2013.09.16 10:53 #1458 PapaYozh: 必ずしもそうではない 肩次第で...。 Mihail Marchukajtes 2013.09.16 10:53 #1459 レバレッジ1:100で0.1 PapaYozh 2013.09.16 10:55 #1460 nikelodeon: 肩次第で...。 nikelodeon レバレッジ1:100で0.1倍 アイテムスタイルに肩は関係ない。 1...139140141142143144145146147148149150151152153...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私は通常、注文を別の機能で送ります。これを最適化し、1つの関数で保留と成行注文の両方を送信できるようにしたいのです。
どうすれば正しく実装できるのか、アドバイスをお願いします。
注文を 出す際には、始値が買値の上(下)にあることを確認し、その他の点も考慮する必要があります。
他の人はどうしているのか見てみましょう。金さんが使った最もシンプルなバリエーションで考えてみよう。
彼は全く何もチェックしない。この機能は、成行注文を開始するためだけのものであることがわかります。
これは論理的ではないと思うんです。注文を送る場合は、種類を問わない。私の思うように書くと、一見すると長すぎる。
一般論として、これらの点をより良く実現するためのヒントや手助けをお願いしたいのです。
私は通常、注文を別の機能で送ります。これを最適化し、1つの関数で保留と成行注文の両方を送信できるようにしたいのです。
どうすれば正しく実装できるのか、アドバイスをお願いします。
注文を出す際には、始値が買値の上(下)にあることを確認し、その他の点も考慮する必要があります。
他の人はどうしているのか見てみましょう。金さんが使った最もシンプルなバリエーションで考えてみよう。
彼は全く何もチェックしない。この機能は、成行注文を開始するためだけのものであることがわかります。
これは論理的ではないと思うんです。注文を送る場合は、種類を問わない。私の思うように書くと、一見すると長すぎる。
総じて、これらの点をより良く実装するためのヒントとなるようなことをお聞かせください。
さて、イゴールの関数は、まさに関数名で示されたタスクを実行します。すべての調整とチェックは、この関数を呼び出す前に行う必要があります。結局のところ、この関数自体は与えられたタスクを実行するだけで、(関数に)渡されたパラメータでポジションを 開くだけで、それ以上のことはしません。必要なエラー処理も完璧にこなします。何が足りないのか、それは自分で開発することです。
例えて言うなら、お店でインスタントコーヒーを買うと、熱湯と砂糖と他の材料の自動混合がそれに提供されない - 自分でコーヒーを作る方法を知っていた方がいい。
みなさん、それは可能ですか?別のループ条件で書き換えてください...。
つまり、素晴らしいbbands_stopというインジケータがあるのです。
for (shift=Nbars-Length-1;shift>=0;shift--)
{
smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift);
smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift);
if (Close[shift]>smax[shift+1]) trend=1;
if (Close[shift]<smin[shift+1]) trend=-1;
bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
if (trend>0)
UpTrendBuffer[shift]=bsmin[shift];
else
DownTrendBuffer[shift]=bsmax[shift];
}
前回の結果と同じようなコードを書くことは可能でしょうか?しかし、ループのため。
for(i = 0; i <= limit; i++) {
2日目にしてやっと見つけた。
こんにちは、もちろん質問は、1ピップが1ドルの価値を持つために、ロットがどのくらい必要なのか、という愚かなものです。
0.1
必ずしもそうではない
肩次第で...。
レバレッジ1:100で0.1倍
アイテムスタイルに肩は関係ない。