MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 706 1...699700701702703704705706707708709710711712713...1953 新しいコメント multiplicator 2018.12.01 02:14 #7051 端末は余分な文字をすべて破棄するだけです。 このボリュームで開けば。0.0290.02ロットオープンします と、そのボリュームで開くと NormalizeDouble(0.029,2) 0.03ロットオープンします。 multiplicator 2018.12.01 03:21 #7052 multiplicator:小数点 以下の桁数を計算するにはどうしたらよいですか? 例えば、最小ロットが0.01であることを知りました。 小数点 以下の桁数が2であることはどのように推測すればよいのでしょうか? で、オーダーボリュームを小数点以下2桁に正規化します。 これがコードネーム です。void OnStart() { double minlot=MarketInfo(Symbol(),MODE_MINLOT); Alert(d(minlot)); } int d(double x) { int n; for(n=0;n<8;n++) { if(x==NormalizeDouble(x,n)) { return(n); } } return(n-1); } Igor Makanu 2018.12.01 05:19 #7053 multiplicator: 端末は、余分な符号をすべて破棄するだけです。 この巻で幕を開けるとしたら。0.02ロットオープンします。 で、そのボリュームで開くと 0.03ロットオープンします。あなたは0.25ロットを開く必要がある場合はどうなりますか? ここでは、準備ができて、作業関数は、それらを読んで、それらを使用します。 https://www.mql5.com/ru/forum/131859/page8#comment_3359730 の乗算器 です。 例)関数に7ロットという値を入れています。このブローカーは、最小ロット数が5で、ロット単位が2 です。 これは私のロット正規化関数で、長い間使っていますが、まだ誰も文句を言っていません。 そこでロット増分を求め、それをロット増分の桁数に切り上げることができます。 //_______________________________________________________________________ //Нормализация объема лота для ордера up=true - в большую сторону, иначе в меньшую //_______________________________________________________________________ double NormalizeLot(double value, bool up=false){ double res,sizetable[9] = {1.0, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001}; double lotStep = MarketInfo(Symbol(),MODE_LOTSTEP); int lotdigits; for (lotdigits=8; lotdigits>=0 ; lotdigits--) if (lotStep <= sizetable[lotdigits]) break; if(up) res = NormalizeDouble(MathCeil(MathMin(MathMax(value, MarketInfo(Symbol(),MODE_MINLOT)), MarketInfo(Symbol(),MODE_MAXLOT))/lotStep)*lotStep,lotdigits); else res = NormalizeDouble(MathFloor(MathMin(MathMax(value, MarketInfo(Symbol(),MODE_MINLOT)), MarketInfo(Symbol(),MODE_MAXLOT))/lotStep)*lotStep,lotdigits); return(res);} //_______________________________________________________________________ さて、あなたはロットステップ、例えば、0.37を持っているサーバーを見つけた場合は、ループ内の必要なロットへの追加と比較のみですが、そのようなサーバーはありませんでした、それはビットコインの非標準のロットがあるようだ、従事していない、私は知らない、あなたは特定の状況が必要です。 Только "Полезные функции от KimIV". 2011.02.18www.mql5.com Все функции взяты из этой ветки - http://forum.mql4... tr2de 2018.12.01 13:09 #7054 良い一日親愛なる同僚は、私がバイナリオプションでSHI_silvertrend_signal指標の信号で取引を開始するための私のEAで条件を正しく綴る助けてください、唯一のOP_SELLとOP_BUY.はM1とM5についてです。直前のローソク足の終値でシグナルが発生します。 - シグナル発生時に、シグナル発生後最初のローソク足のみで、注文を出す場合 - 信号を受信した瞬間から5秒以内とする。 - スリッページ内の価格変動許容値 (インジケータは2つのバッファを持ちます) インジケータコメントから// 両方のバッファをゼロで 埋める。そうしないと、タイムフレームを変更したときにゴミが出ます。 今後ともよろしくお願いいたします。 void OnTick() { ..... if((CountSell() + CountBuy())== 0 && isTradeHours()) { SignalBuy = iCustom(NULL, 0, "SST", AllBars, Otstup, Per, 0,0); //получаемое значение в формате 4546546549.0 SignalSell = iCustom(NULL, 0, "SST", AllBars, Otstup, Per, 1,0); if((Ask <= SignalBuy - Slippage*Point || Ask <= SignalBuy + Slippage*Point) && iBarShift(NULL, 0,TimeSeconds(TimeCurrent()))) //<---- помогите дописать условие { if(OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0,IntegerToString(Expiration), Magic, 0, Blue) > 0) { Print("Ордер на покупку открыт!"); return; }else Print("Ошибка открытия ордера на покупку!"); } if((Bid >= SignalSell - Slippage*Point || Bid >= SignalSell + Slippage*Point) && iBarShift(NULL, 0,TimeSeconds(TimeCurrent()))) //<---- помогите дописать условие { if(OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0,IntegerToString(Expiration), Magic, 0, Red) > 0) { Print("Ордер на продажу открыт!"); return; }else Print("Ошибка открытия ордера на продажу!"); } } } ....... インジケーターのコードそのもの(インターネット上にある。コードを公開することがフォーラムのルールに反しないのであれば、そのコード) //+------------------------------------------------------------------+ //| SHI_SilverTrendSig.mq4 | //| Copyright © 2003, VIAC.RU, OlegVS, GOODMAN, © 2005, Shurka | //| shforex@narod.ru | //| | //| | //| Пишу программы на заказ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Shurka" #property link "http://shforex.narod.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 Blue #define SH_BUY 1 #define SH_SELL -1 //---- Входные параметры extern int AllBars=0;//Для скольки баров считать. 0 - для всех. extern int Otstup=30;//Отступ. extern int Per=9;//Период. int SH,NB,i,UD; double R,SHMax,SHMin; double BufD[]; double BufU[]; //+------------------------------------------------------------------+ //| Функция инициализации | //+------------------------------------------------------------------+ int init() { //В NB записываем количество баров для которых считаем индикатор if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars; IndicatorBuffers(2); IndicatorShortName("SST"); SetIndexStyle(0,DRAW_ARROW,0,1); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexBuffer(0,BufU); SetIndexBuffer(1,BufD); SetIndexDrawBegin(0,Bars-NB);//Индикатор будет отображаться только для NB баров SetIndexDrawBegin(1,Bars-NB); ArrayInitialize(BufD,0.0);//Забьём оба буфера ноликами. Иначе будет мусор при смене таймфрейма. ArrayInitialize(BufU,0.0); return(0); } //+------------------------------------------------------------------+ //| Функция деинициализации | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Собсна индикатор | //+------------------------------------------------------------------+ int start() { int CB=IndicatorCounted(); /* Тут вот та самая оптимизационная фишка. В язык введена функция, которая возвращает количество посчитанных баров, причём очень хитро. При первом вызове индикатора это 0, всё понятно, ещё ничего не считалось, а затем выдаёт количество обсчитанных баров минус один. Т.е. если всего баров 100, то функция вернёт 99. Я ввёл такой код, выше у меня определялась NB - кол-во баров подлежащих обсчёту. В принципе этот параметр можно и выкинуть, однако для тех кто в танке (I80286) можно и оставить. Так вот, здесь, при первом вызове NB остаётся прежней, а при последующих уменьшается до последнего бара, т.е. 1 или 2, ну или сколько там осталось посчитать*/ if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB; for (SH=1;SH<NB;SH++)//Прочёсываем график от 1 до NB { for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);} R/=55; SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)]; SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)]; if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufD[SH]=High[SH]+R*0.5; UD=SH_SELL; } if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufU[SH]=Low[SH]-R*0.5; UD=SH_BUY; } } return(0); } multiplicator 2018.12.01 16:03 #7055 Igor Makanu: res = NormalizeDouble(MathFloor(MathMin(MathMax(value, MarketInfo(Symbol(),MODE_MINLOT)), MarketInfo(Symbol(),MODE_MAXLOT))/lotStep)*lotStep,lotdigits); (なんと、matmaxの後にmatminという展開です。) Roman Shiredchenko 2018.12.01 16:40 #7056 最適化キーがないのはどこですか? どのように最適化するか? Alexander Boltunov 2018.12.01 16:46 #7057 インジケーターのシグナルでトレードを開始する条件を正しく指定する方法を教えてください。 Renkoチャート用の簡単なExpert Advisorを書いた ら、こんな感じになりました。 extern double LotSize = 0.01; extern int Magic = 1; int prevtime = 0; int start() { //При образовании нового кубика ренко проверка на Buy или Sell и заключение ордера if (prevtime != Time[0]) { if (Close[1] > Open[1]) { OrderSend(Symbol(), OP_BUY, LotSize, ND(Ask), 3, 0, 0, "RG", Magic, 0, Blue); } if (Close[1] < Open[1]) { OrderSend(Symbol(), OP_SELL, LotSize, ND(Bid), 3, 0, 0, "RG", Magic, 0, Red); } Magic++; prevtime = Time[0]; } return(0); } double ND(double np) { return(NormalizeDouble(np,Digits)); } オフラインのチャートではあまり満足できないので、AG_Renko_Chartというインジケータと組み合わせることにしました。メッセージに添付しています。 しかし、ここでは右端の連子値を返す関数がどうなっているのかを説明します。 iCustom(_Symbol,TF,"AG_Renko_Chart",Step,false,false,Revers,0,0); 下向きのバーか上向きのバーか区別がつかないのですが・・・。そして、多くのトレードをしないような機能を適切に処方する方法・・・。 総じて、頭の回転が悪いのです。助けてください!!!! ファイル: AG_Renko_Chart.ex4 17 kb AG_Renko_Chart.mq4 8 kb Alexey Viktorov 2018.12.01 17:16 #7058 Roman Shiredchenko:最適化キーがないのはどこですか? どのように最適化するか? これはジョークなのか、それとも社会的なジョークなのか? Roman Shiredchenko 2018.12.01 17:24 #7059 Alexey Viktorov:これは冗談なのか、それとも社会をバカにしているのか? 冗談でもなんでもなく、それで社会を馬鹿にしているわけでもない。 異端を書き込む前に、写真をよく見てください。 ilvic 2018.12.01 17:52 #7060 Roman Shiredchenko:というのは冗談で、そうやってコケるわけではありません。 異端を書き込む前に、写真をよく見てください。 問題は、画面の解像度です。 1...699700701702703704705706707708709710711712713...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このボリュームで開けば。
0.029
0.02ロットオープンします
0.03ロットオープンします。と、そのボリュームで開くと
小数点 以下の桁数を計算するにはどうしたらよいですか?
例えば、最小ロットが0.01であることを知りました。
小数点 以下の桁数が2であることはどのように推測すればよいのでしょうか?
で、オーダーボリュームを小数点以下2桁に正規化します。
端末は、余分な符号をすべて破棄するだけです。
この巻で幕を開けるとしたら。
0.02ロットオープンします。
0.03ロットオープンします。で、そのボリュームで開くと
あなたは0.25ロットを開く必要がある場合はどうなりますか? ここでは、準備ができて、作業関数は、それらを読んで、それらを使用します。
https://www.mql5.com/ru/forum/131859/page8#comment_3359730
の乗算器 です。
例)関数に7ロットという値を入れています。
このブローカーは、最小ロット数が5で、ロット単位が2 です。
これは私のロット正規化関数で、長い間使っていますが、まだ誰も文句を言っていません。 そこでロット増分を求め、それをロット増分の桁数に切り上げることができます。
さて、あなたはロットステップ、例えば、0.37を持っているサーバーを見つけた場合は、ループ内の必要なロットへの追加と比較のみですが、そのようなサーバーはありませんでした、それはビットコインの非標準のロットがあるようだ、従事していない、私は知らない、あなたは特定の状況が必要です。良い一日親愛なる同僚は、私がバイナリオプションでSHI_silvertrend_signal指標の信号で取引を開始するための私のEAで条件を正しく綴る助けてください、唯一のOP_SELLとOP_BUY.はM1とM5についてです。直前のローソク足の終値でシグナルが発生します。
- シグナル発生時に、シグナル発生後最初のローソク足のみで、注文を出す場合
- 信号を受信した瞬間から5秒以内とする。
- スリッページ内の価格変動許容値
(インジケータは2つのバッファを持ちます)
インジケータコメントから// 両方のバッファをゼロで 埋める。そうしないと、タイムフレームを変更したときにゴミが出ます。
今後ともよろしくお願いいたします。
インジケーターのコードそのもの(インターネット上にある。コードを公開することがフォーラムのルールに反しないのであれば、そのコード)
Igor Makanu:
(なんと、matmaxの後にmatminという展開です。)
最適化キーがないのはどこですか?
どのように最適化するか?
インジケーターのシグナルでトレードを開始する条件を正しく指定する方法を教えてください。
Renkoチャート用の簡単なExpert Advisorを書いた ら、こんな感じになりました。
オフラインのチャートではあまり満足できないので、AG_Renko_Chartというインジケータと組み合わせることにしました。メッセージに添付しています。
しかし、ここでは右端の連子値を返す関数がどうなっているのかを説明します。
下向きのバーか上向きのバーか区別がつかないのですが・・・。そして、多くのトレードをしないような機能を適切に処方する方法・・・。
総じて、頭の回転が悪いのです。助けてください!!!!
最適化キーがないのはどこですか?
どのように最適化するか?
これはジョークなのか、それとも社会的なジョークなのか?
これは冗談なのか、それとも社会をバカにしているのか?
冗談でもなんでもなく、それで社会を馬鹿にしているわけでもない。
異端を書き込む前に、写真をよく見てください。
というのは冗談で、そうやってコケるわけではありません。
異端を書き込む前に、写真をよく見てください。
問題は、画面の解像度です。