MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 151 1...144145146147148149150151152153154155156157158...1953 新しいコメント 削除済み 2017.03.15 18:34 #1501 Maxim Kuznetsov:というようなものです.string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)if (ObjectFind(level)==-1) { // гор.вектора нет - видимо первый ордер из закрытых на баре // сделать горизонтальную линию ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice); // указывающую только вправо ObjectSetInteger(level,OBJPROP_RAY,1); ObjectSetInteger(level,OBJPROP_RAYLEFT,0); // украсить её как-то :-) ObjectSetInteger(level,OBJPROP_COLOR,....) ....} else { // гор.уровень есть - значит были ордера закрытые на этом баре // по фантазии - обновить метки/корректировать уровень/etc}int TotalPos=-1; void start() { // остальной код //-- if(OrdersTotal()!=TotalPos) { // не мучаем каждый тик for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { History(); } }}} TotalPos=OrdersTotal(); // запомним количество //-- } void History() { string Ticket=(string)OrderTicket(); color col=Red; if(OrderType()==0)col=Blue; datetime a=OrderOpenTime(); double b=OrderOpenPrice(); datetime c=OrderCloseTime(); double d=OrderClosePrice(); double prSep=OrderProfit()+OrderCommission()+OrderSwap(); double prAll=0; int cn=0; string hTicket; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { datetime ct=OrderCloseTime(); // 60 секунд разницы между закрытием первой и последней в сетке if(c<=ct+60 && c>=ct-60) { prAll+=OrderProfit()+OrderCommission()+OrderSwap(); hTicket=(string)OrderTicket(); cn++; } }}} ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b); ObjectSet(Ticket+"Open",OBJPROP_COLOR,col); ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1); ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d); ObjectSet(Ticket+"Line",OBJPROP_COLOR,col); ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1); ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT); ObjectSet(Ticket+"Line",OBJPROP_RAY,0); ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d); ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green); ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3); Ticket=cn>1?hTicket:Ticket; ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d); ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0); ObjectSetText(Ticket+"Profit",DoubleToString(prAll,2),10,"Arial",White); ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d); ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+Period()*60*2); }ベクトルをレベルファインダーに使うのは間違っている...。いまいち・・・・・・((馬を動かすとどうなるか)レベル検索では、すでに記録されている価格レベルでの利益総和の原則を使用します... 例:ここでは60秒の遅延でトライして利益を加算しています for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { datetime ct=OrderCloseTime(); // 60 секунд разницы между закрытием первой и последней в сетке if(c<=ct+60 && c>=ct-60) { prAll+=OrderProfit()+OrderCommission()+OrderSwap(); hTicket=(string)OrderTicket(); cn++;次に、レコードを考える必要があります。レベル> 1の累積利益数であれば、これは我々のオーダーであり、我々のレベルであり、このレベルから我々はレイを描く。 Andrei Sokolov 2017.03.16 12:56 #1502 ごあいさつ私は、毎ティック ごとに、そのEAで作成された利用可能な注文をループして、状況に応じて行動する機能を持つEAを計画しています。新しい注文ごとに個別の変数を作成し、さらにループでそれらを処理 する方法をアドバイスしてください。(Peremennaja+ticket=12345;のようなものだと思われます) Alexey Viktorov 2017.03.16 13:15 #1503 Andrey Sokolov:ごあいさつ私は、毎ティック ごとに、そのEAで作成された利用可能な注文をループして、状況に応じて行動する機能を持つEAを計画しています。新しい注文ごとに個別の変数を作成し、さらにループでそれらを処理 する方法をアドバイスしてください。(Peremennaja+ticket=12345;のようなものだと思われます) 好ましくは、配列、あるいは構造体の配列である。 Andrei Sokolov 2017.03.16 13:18 #1504 Alexey Viktorov: 配列、あるいは構造体の配列がベターです。 すみません、詳しく教えてください。 Alexey Viktorov 2017.03.16 13:43 #1505 Andrey Sokolov: すみません、もう少し詳しくお願いします。ここと ここ構造体と構造体型の配列が作成されます。すべてのコードの外側で。struct trade_settings { double take; // значения цены фиксации прибыли double stop; // значение цены защитного стопа uchar slippage; // значение допустимого проскальзывания }; //--- создали массив типа trade_settings trade_settings my_set[];// присвоить значение нулевому индексу массива в основном коде my_set[0].take = что_то; Структуры и, классы и интерфейсы - Типы данных - Основы языка - Справочник MQL4 docs.mql4.com Структуры и, классы и интерфейсы - Типы данных - Основы языка - Справочник MQL4 Nikolay Fedyay 2017.03.16 22:14 #1506 こんにちは。 水平線"ResisL"とトレンド 線の交点を角度"TrndL"で求める方法を教えてください。 Artyom Trishkin 2017.03.16 22:42 #1507 Nikolay Fedyay:こんにちは。 水平線"ResisL"とトレンド 線の交点を角度"TrndL"で求める方法を教えてください。//+------------------------------------------------------------------+ //| Уравнение прямой | //+------------------------------------------------------------------+ double EquationDirect(double left_bar, double left_price, double right_bar, double right_price, double bar_to_search) { return((right_bar==left_bar)?left_price:(right_price-left_price)/(right_bar-left_bar)*(bar_to_search-left_bar)+left_price); } //+------------------------------------------------------------------+ 傾斜線の座標点を2つ知っていて、それをこの関数のパラメータとして貼り付けると、bar_to_search上の点の価格が出力されます。あとは、バーループの中でこの関数を呼び出し、それが返す値と水平線の価格を比較するだけです。サイクルの最後のバーで関数が返す値が水平線の価格より低いか等しく、サイクルの現在のバーで関数が返す値が線の価格より大きければ、クロスポイントのX座標はサイクルインデックスに対応する時間となり、Y座標は関数が返す価格となります。 Nikolay Fedyay 2017.03.16 22:52 #1508 Artyom Trishkin: ありがとうございます。 まだバーがないとき、つまり将来の日付のクロスオーバーポイントを知りたい場合はどうでしょうか。 Artyom Trishkin 2017.03.16 23:03 #1509 Nikolay Fedyay: ありがとうございます。 まだバーがないとき、つまり将来の日付のクロスオーバーポイントを知りたい場合はどうでしょうか。この機能はまだ試していません - 実験が必要です。 Nikolay Fedyay 2017.03.16 23:20 #1510 Artyom Trishkin:この機能はまだ試していません - 実験が必要です。 ぜひ、時間を見つけては実験し、その結果を共有してください。 何を実験 したらいいのかわからないから. 1...144145146147148149150151152153154155156157158...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
というようなものです.
string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)
if (ObjectFind(level)==-1) {
// гор.вектора нет - видимо первый ордер из закрытых на баре
// сделать горизонтальную линию
ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice);
// указывающую только вправо
ObjectSetInteger(level,OBJPROP_RAY,1);
ObjectSetInteger(level,OBJPROP_RAYLEFT,0);
// украсить её как-то :-)
ObjectSetInteger(level,OBJPROP_COLOR,....)
....
} else {
// гор.уровень есть - значит были ордера закрытые на этом баре
// по фантазии - обновить метки/корректировать уровень/etc
}
ベクトルをレベルファインダーに使うのは間違っている...。いまいち・・・・・・((
馬を動かすとどうなるか)
レベル検索では、すでに記録されている価格レベルでの利益総和の原則を使用します...
例:ここでは60秒の遅延でトライして利益を加算しています
次に、レコードを考える必要があります。
レベル> 1の累積利益数であれば、これは我々のオーダーであり、我々のレベルであり、このレベルから我々はレイを描く。
ごあいさつ
私は、毎ティック ごとに、そのEAで作成された利用可能な注文をループして、状況に応じて行動する機能を持つEAを計画しています。
新しい注文ごとに個別の変数を作成し、さらにループでそれらを処理 する方法をアドバイスしてください。(Peremennaja+ticket=12345;のようなものだと思われます)
ごあいさつ
私は、毎ティック ごとに、そのEAで作成された利用可能な注文をループして、状況に応じて行動する機能を持つEAを計画しています。
新しい注文ごとに個別の変数を作成し、さらにループでそれらを処理 する方法をアドバイスしてください。(Peremennaja+ticket=12345;のようなものだと思われます)
配列、あるいは構造体の配列がベターです。
すみません、詳しく教えてください。
すみません、もう少し詳しくお願いします。
ここと ここ
構造体と構造体型の配列が作成されます。すべてのコードの外側で。
こんにちは。
水平線"ResisL"とトレンド 線の交点を角度"TrndL"で求める方法を教えてください。
こんにちは。
水平線"ResisL"とトレンド 線の交点を角度"TrndL"で求める方法を教えてください。
ありがとうございます。
まだバーがないとき、つまり将来の日付のクロスオーバーポイントを知りたい場合はどうでしょうか。
ありがとうございます。
まだバーがないとき、つまり将来の日付のクロスオーバーポイントを知りたい場合はどうでしょうか。
この機能はまだ試していません - 実験が必要です。
この機能はまだ試していません - 実験が必要です。
ぜひ、時間を見つけては実験し、その結果を共有してください。
何を実験 したらいいのかわからないから
.