プロップ取引 - それは詐欺か、それとも良いものなのか? - ページ 9 12345678910111213141516...18 新しいコメント 削除済み 2019.07.14 15:20 #81 prostotrader: ところで、この175ルーブルは、どのように計算するのですか? もし、3ヶ月前にきっちりアップして、期限切れでアウトなら、350ルーブルは差し引くべき。 なぜなら、預託費用は株式の動き(買い/売り)があった場合のみ考慮されるからです。 また、何らかの理由で同月に退職した(あるいは有効期限月に入った)場合は、175ルーブルだけ差し引く必要があります。 EAは、どのように控除額を理解するのでしょうか? 追加 そして、1ペア(先物株)でも膨大な量になり、1000ペアでは-ミゼロです。 すべては、取引状況の頻度に依存します。大型デポの場合、175pは大きな役割を果たさないというのは同意します。しかし、誰もが大きなデポを持っているわけではありません。 ただ、今はこのコミッションも考慮に入れなければならないのです。 prostotrader 2019.07.14 15:21 #82 Alexey Kozitsyn: すべては、取引の状況がどの程度の頻度で発生するかによります。175pでは大型デポではあまり変わらないというのは同意です。しかし、誰もが大きなデポを持っているわけではありません。 あとは、この手数料を考慮するだけです。 考慮しなければならないことは明らかだが、どのように? 削除済み 2019.07.14 15:26 #83 prostotrader: これを考慮するのは理解できるが、どのように考慮すればいいのか。 おそらくエントリー時に一度175p。お金は長くは遊ばないし、出口の月にはまた入らなければならないことを暗に示している。 prostotrader 2019.07.14 15:30 #84 Alexey Kozitsyn: おそらくエントリー時に一度175p。お金が長い間遊休にならず、出口の月にまた入らなければならないことを暗示している。 理にかなっているが、では、その利益をどう説明するのか? つまり、満期まで何日あるのか、何枚買われるのかを知る必要があるのです。 つまり、1ペアに対して%エントリーが計算される 追加 とりあえず、次のように決めました。 deponalog:= Settings.DepoNalog/(Settings.MaxFut * ExpData.FutData.Lot); Settings.DepoNalog - 175 руб. Settings.MaxFut - Предполагаемое кол-во фьючерсов продажи (на скрине 100) ExpData.FutData.Lot - кол-во акций во фьючерсе 削除済み 2019.07.14 16:06 #85 prostotrader: 理にかなっているが、では、そのメリットをどう説明するのか。 すなわち、満期までの日数と購入される契約数を知る必要があります。 1ペアに対して%入力が計算されるため 追加 とりあえず、そうすることにしました。 もうひとつ、バリエーションがあります。預金者の手数料を入力パラメータにすればいいんだよ。同時に複数のポジションがある場合は、今月中に手数料と最初の位置、および2番目以降の位置の収益性を計算するために - アカウントに手数料を取らずに。 削除済み 2019.07.14 16:09 #86 prostotrader:理にかなっているが、では、その利益をどう説明するのか?すなわち、満期までの日数と購入される契約数を知る必要があります。というのも、%エントリーは1組で計算されるからです。 はい、その値で割った契約数と175を均等に 把握する必要があります。月の初めに手数料が考慮されていなかった場合に備えて、もう一度。 prostotrader 2019.07.14 16:26 #87 それは、次のようなものです。 //+------------------------------------------------------------------+ //| SPOTvsFUT.mq5 | //| Copyright 2019, prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, prostotrader" #property link "https://www.mql5.com" #property version "1.00" #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Label1 #property indicator_label1 "Input %" #property indicator_type1 DRAW_LINE #property indicator_color1 clrLime #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Label2 #property indicator_label2 "Output %" #property indicator_type2 DRAW_LINE #property indicator_color2 clrAqua #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- #define on_call -111 #define YEAR 365 //--- input double StCB = 7.5; //Ставка ЦБ(%) input double BBSpot = 0.025; //Брокер и Биржа СПОТ(%) input double BrFut = 0.24; //Брокер ФОРТС(руб.) input double BiFut = 0.0066; //Биржа ФОРТС(%) input double BrExp = 1.0; //Брокер за эксп.(руб.) input double BiExp = 2.0; //Биржа за зксп.(руб.) input double Div = 0; //Дивиденты(руб./акция) input double NalogDiv = 13; //Налог на дивиденты(%) input double NalDepo = 175; //Комиссия депозитария (руб./мес.) input long NFut = 100; //Передп. кол-во фьючерсов к продаже input int aBars = 40; //Мин. Баров на графике //--- struct MARKET_DATA { int exp_day; double spot_ask; double spot_bid; double fut_ask; double fut_bid; double fut_lot; double go_sell; double go_buy; }; //--- string spot_symbol; int event_cnt; MARKET_DATA ma_data; double inBuff[], outBuff[]; bool spot_book, fut_book; //+------------------------------------------------------------------+ //| Custom indicator Get Spot name function | //+------------------------------------------------------------------+ string GetSpot(const string fut_name) { string Spot = ""; if(fut_name != "") { int str_tire = StringFind(fut_name, "-"); if(str_tire > 0) { Spot = StringSubstr(fut_name, 0, str_tire); if(Spot == "GAZR") Spot = "GAZP"; else if(Spot == "SBRF") Spot = "SBER"; else if(Spot == "SBPR") Spot = "SBERP"; else if(Spot == "TRNF") Spot = "TRNFP"; else if(Spot == "NOTK") Spot = "NVTK"; else if(Spot == "MTSI") Spot = "MTSS"; else if(Spot == "GMKR") Spot = "GMKN"; else if(Spot == "SNGR") Spot = "SNGS"; else if(Spot == "Eu") Spot = "EURRUB_TOD"; else if(Spot == "Si") Spot = "USDRUB_TOD"; else if(Spot == "SNGP") Spot = "SNGSP"; } } return(Spot); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { int t_bars = Bars(Symbol(), PERIOD_CURRENT); if(t_bars < (aBars + 2)) { Alert("Не хватает баров на графике!"); return(INIT_FAILED); } event_cnt = 0; //--- spot_symbol = GetSpot(Symbol()); if(spot_symbol == "") { Alert("Не получено имя СПОТа!"); return(INIT_FAILED); } else { if(SymbolSelect(spot_symbol, true) == false) { Alert("Нет смвола с именем " + spot_symbol + "!"); return(INIT_FAILED); } else { spot_book = MarketBookAdd(spot_symbol); if(spot_book == false) { Alert("Не добавлен стакан СПОТа!"); return(INIT_FAILED); } } } fut_book = MarketBookAdd(Symbol()); if(spot_book == false) { Alert("Не добавлен стакан фьючерса!"); return(INIT_FAILED); } IndicatorSetInteger(INDICATOR_DIGITS, 2); IndicatorSetString(INDICATOR_SHORTNAME, "SPOTvsFUT"); //--- SetIndexBuffer(0, inBuff, INDICATOR_DATA); PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, EMPTY_VALUE); ArraySetAsSeries(inBuff, true); SetIndexBuffer(1, outBuff, INDICATOR_DATA); PlotIndexSetDouble(1, PLOT_EMPTY_VALUE, EMPTY_VALUE); ArraySetAsSeries(outBuff, true); int window=ChartWindowFind(ChartID(),"SPOTvsFUT"); ObjectCreate(ChartID(),"SPOTvsFUT_1",OBJ_LABEL,window,0,0); ObjectSetInteger(ChartID(),"SPOTvsFUT_1",OBJPROP_YDISTANCE,15); ObjectSetInteger(ChartID(),"SPOTvsFUT_1",OBJPROP_XDISTANCE,5); ObjectSetInteger(ChartID(),"SPOTvsFUT_1",OBJPROP_COLOR,clrLime); ObjectSetString(ChartID(),"SPOTvsFUT_1",OBJPROP_TEXT,"Input: 0"); ObjectCreate(ChartID(),"SPOTvsFUT_2",OBJ_LABEL,window,0,0); ObjectSetInteger(ChartID(),"SPOTvsFUT_2",OBJPROP_YDISTANCE,30); ObjectSetInteger(ChartID(),"SPOTvsFUT_2",OBJPROP_XDISTANCE,5); ObjectSetInteger(ChartID(),"SPOTvsFUT_2",OBJPROP_COLOR,clrAqua); ObjectSetString(ChartID(),"SPOTvsFUT_2",OBJPROP_TEXT,"Output: 0"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ // Custom indicator DeInit function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectDelete(ChartID(),"SPOTvsFUT_1"); ObjectDelete(ChartID(),"SPOTvsFUT_2"); if(fut_book == true) MarketBookRelease(Symbol()); if(spot_book == true) MarketBookRelease(spot_symbol); if(reason == REASON_INITFAILED) { Print("Индикатор удалён! Причина - ошибка инициализации."); string short_name = ChartIndicatorName(ChartID(), 1, 0); ChartIndicatorDelete(ChartID(), 1, short_name); } } //+------------------------------------------------------------------+ //| Custom indicator Get expiration function | //+------------------------------------------------------------------+ int GetExpiration(const string aSymbol) { MqlDateTime ExpData, CurData; datetime expir_time = datetime(SymbolInfoInteger(aSymbol, SYMBOL_EXPIRATION_TIME)); TimeToStruct(expir_time, ExpData); TimeTradeServer(CurData); if(ExpData.year != CurData.year) { return(YEAR * (ExpData.year - CurData.year) - CurData.day_of_year + ExpData.day_of_year); } else { return(ExpData.day_of_year - CurData.day_of_year); } } //+------------------------------------------------------------------+ // Custom indicator On book event function | //+------------------------------------------------------------------+ void OnBookEvent(const string& symbol) { if((symbol == Symbol()) || (symbol == spot_symbol)) { ma_data.exp_day = GetExpiration(Symbol()); ma_data.fut_ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK); ma_data.fut_bid = SymbolInfoDouble(Symbol(), SYMBOL_BID); ma_data.fut_lot = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_CONTRACT_SIZE); ma_data.go_sell = SymbolInfoDouble(Symbol(), SYMBOL_MARGIN_INITIAL); ma_data.go_buy = SymbolInfoDouble(Symbol(), SYMBOL_MARGIN_MAINTENANCE); ma_data.spot_ask = SymbolInfoDouble(spot_symbol, SYMBOL_ASK); ma_data.spot_bid = SymbolInfoDouble(spot_symbol, SYMBOL_BID); //--- double price[]; OnCalculate(event_cnt, event_cnt, on_call, price); } } //+------------------------------------------------------------------+ // Custom indicator Calc In Value function | //+------------------------------------------------------------------+ double CalcInValue() { double depocomiss = NalDepo/(NFut * ma_data.fut_lot); double comiss = ma_data.spot_ask * ma_data.fut_lot * BBSpot/100 * 2 + BrFut + BiFut * ma_data.fut_bid/100 + BrExp + BiExp; double divNalog = Div/100 * 13; double divWaite = 0; if(Div > 0) divWaite = ((Div - divNalog) * ma_data.fut_lot * 13/100/365 * 20); //--- TODO --- return(0); } //+------------------------------------------------------------------+ // Custom indicator Calc Out Value function | //+------------------------------------------------------------------+ double CalcOutValue() { double comiss = ma_data.spot_bid * ma_data.fut_lot * BBSpot/100 + BrFut + BiFut * ma_data.fut_ask/100; //--- TODO --- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { if(prev_calculated == 0) { ArrayInitialize(inBuff, EMPTY_VALUE); ArrayInitialize(outBuff, EMPTY_VALUE); } //--- if(begin == on_call) { for(int i = aBars - 1; i > 0; i--) { inBuff[i] = inBuff[i - 1]; outBuff[i] = outBuff[i - 1]; } inBuff[0] = CalcInValue(); outBuff[0] = CalcOutValue(); } else { inBuff[0] = inBuff[1]; outBuff[0] = outBuff[1]; } inBuff[aBars] = EMPTY_VALUE; outBuff[aBars] = EMPTY_VALUE; ObjectSetString(ChartID(),"SPOTvsFUT_1",OBJPROP_TEXT,"Input: " + DoubleToString(inBuff[0], 2)); ObjectSetString(ChartID(),"SPOTvsFUT_2",OBJPROP_TEXT,"Output: " + DoubleToString(outBuff[0], 2)); ChartRedraw(ChartID()); //--- return value of prev_calculated for next call event_cnt = rates_total; return(rates_total); } //+------------------------------------------------------------------+ 削除済み 2019.07.14 16:36 #88 prostotrader: それは、次のようなものです。 私は、裁定取引のトピックの完全な、包括的な研究のために、我々は2つのビューで表示を行う必要があると思います:あなたが持っているとして+情報の更新の間にミリ秒の差を追加するだけでなく、ローソク足で表示、収益性の全体像を評価するために。 だいたいこんな感じ(オイルのカレンダー)。 prostotrader 2019.07.14 16:39 #89 Alexey Kozitsyn: 私は、裁定取引を完全に、包括的に研究するためには、2つのビューを表示するべきだと考えています:あなたのような+情報更新の間にミリ秒の差を追加し、また、収益性の全体像を評価するためにローソク足のビューを表示します。 流動性の低い先物でも、2つのメガネは非常に速く機能する SPOTは素晴らしいスピードで「空振り」している if((symbol == Symbol()) || (symbol == spot_symbol)) 追加 Divハンター」戦略のポイントは、リスクフリーで株を買い、先物を売るということです。 配当を獲ったら、配当とエントリーした時のパーセンテージを取得する。 市場はとっくに落ち着いていて、年率7.5%の中銀金利で10~15%は取れない。 削除済み 2019.07.14 16:43 #90 prostotrader: 低液滴の先物でも2つのメガネは非常に高速に動作する SPOTはものすごいスピードで「空振り」している 良い価格で参入させてもらえるかどうか、参入のために理解する必要がある、そのためにmsが必要なのだ(と私は思っている)。また、カップの密度がリアルタイムで見られると良い(ロングレンジの先物用)。 12345678910111213141516...18 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ところで、この175ルーブルは、どのように計算するのですか?
もし、3ヶ月前にきっちりアップして、期限切れでアウトなら、350ルーブルは差し引くべき。
なぜなら、預託費用は株式の動き(買い/売り)があった場合のみ考慮されるからです。
また、何らかの理由で同月に退職した(あるいは有効期限月に入った)場合は、175ルーブルだけ差し引く必要があります。
EAは、どのように控除額を理解するのでしょうか?
追加
そして、1ペア(先物株)でも膨大な量になり、1000ペアでは-ミゼロです。
すべては、取引状況の頻度に依存します。大型デポの場合、175pは大きな役割を果たさないというのは同意します。しかし、誰もが大きなデポを持っているわけではありません。
ただ、今はこのコミッションも考慮に入れなければならないのです。
すべては、取引の状況がどの程度の頻度で発生するかによります。175pでは大型デポではあまり変わらないというのは同意です。しかし、誰もが大きなデポを持っているわけではありません。
あとは、この手数料を考慮するだけです。
考慮しなければならないことは明らかだが、どのように?
これを考慮するのは理解できるが、どのように考慮すればいいのか。
おそらくエントリー時に一度175p。お金は長くは遊ばないし、出口の月にはまた入らなければならないことを暗に示している。
おそらくエントリー時に一度175p。お金が長い間遊休にならず、出口の月にまた入らなければならないことを暗示している。
理にかなっているが、では、その利益をどう説明するのか?
つまり、満期まで何日あるのか、何枚買われるのかを知る必要があるのです。
つまり、1ペアに対して%エントリーが計算される
追加
とりあえず、次のように決めました。
理にかなっているが、では、そのメリットをどう説明するのか。
すなわち、満期までの日数と購入される契約数を知る必要があります。
1ペアに対して%入力が計算されるため
追加
とりあえず、そうすることにしました。
もうひとつ、バリエーションがあります。預金者の手数料を入力パラメータにすればいいんだよ。同時に複数のポジションがある場合は、今月中に手数料と最初の位置、および2番目以降の位置の収益性を計算するために - アカウントに手数料を取らずに。
理にかなっているが、では、その利益をどう説明するのか?
すなわち、満期までの日数と購入される契約数を知る必要があります。
というのも、%エントリーは1組で計算されるからです。
はい、その値で割った契約数と175を均等に 把握する必要があります。月の初めに手数料が考慮されていなかった場合に備えて、もう一度。
それは、次のようなものです。
それは、次のようなものです。
私は、裁定取引のトピックの完全な、包括的な研究のために、我々は2つのビューで表示を行う必要があると思います:あなたが持っているとして+情報の更新の間にミリ秒の差を追加するだけでなく、ローソク足で表示、収益性の全体像を評価するために。
だいたいこんな感じ(オイルのカレンダー)。
私は、裁定取引を完全に、包括的に研究するためには、2つのビューを表示するべきだと考えています:あなたのような+情報更新の間にミリ秒の差を追加し、また、収益性の全体像を評価するためにローソク足のビューを表示します。
流動性の低い先物でも、2つのメガネは非常に速く機能する SPOTは素晴らしいスピードで「空振り」している
追加
Divハンター」戦略のポイントは、リスクフリーで株を買い、先物を売るということです。
配当を獲ったら、配当とエントリーした時のパーセンテージを取得する。
市場はとっくに落ち着いていて、年率7.5%の中銀金利で10~15%は取れない。
低液滴の先物でも2つのメガネは非常に高速に動作する SPOTはものすごいスピードで「空振り」している
良い価格で参入させてもらえるかどうか、参入のために理解する必要がある、そのためにmsが必要なのだ(と私は思っている)。また、カップの密度がリアルタイムで見られると良い(ロングレンジの先物用)。