Exemple #1
0
        public static int Start_and_Stop_FLG_13_09(WorkClasses.Ticks_In TicksIn, WorkClasses.Ticks_Out TicksOut, int cur_in_flg, int count_parameter, double[] cur_in_Array, double Slice_Criteria_IN_SELL, double Slice_Criteria_IN_BUY,
            double Slice_Criteria_OUT, int max_ticks_activ_cnt, double Stohastic_SellLimit, double Stohastic_BuyLimit, string mode, string mode_out)
        {
            if (cur_in_flg == 0)
            {
                int ii_minus = 0;
                int ii_plus = 0;
                for (int j = 0; j < count_parameter; j++)
                {
                    if (cur_in_Array[TicksIn.dim - 1 - j] < -Slice_Criteria_IN_SELL)
                    {
                        ii_minus++;
                    }
                    if (cur_in_Array[TicksIn.dim - 1 - j] > Slice_Criteria_IN_BUY)
                    {
                        ii_plus++;
                    }
                }
                if (ii_minus == count_parameter && TicksOut.AskSpeed[TicksIn.dim - 1] * 100000.0 < 0.0 && TicksOut.Ask_F_avg_3[TicksIn.dim - 1] < 0.0)
                {
                    if (TicksIn.Only_BUY_flg) { }
                    else
                    {
                        bool new_mode = false;
                        if (TicksIn.Stohastic_Param > Stohastic_SellLimit && mode == "old")
                            new_mode = true;
                        else if ((TicksIn.Stohastic_Param > Stohastic_SellLimit || (TicksIn.Stohastic_Param <= Stohastic_SellLimit && TicksIn.StM5_733_3 >= TicksIn.StM5_733_2)) && mode == "new")
                            //else if ((TicksIn.StM5_733_3 >= TicksIn.StM5_733_2) && mode == "new")
                            new_mode = true;
                        else new_mode = false;

                        if (new_mode == true)
                        {
                            cur_in_flg = -1;
                            TicksOut.OpenOrderFLG = 1;
                            TicksOut.OpenASK = TicksIn.Ask[TicksIn.dim - 1];
                            TicksOut.OpenBID = TicksIn.Bid[TicksIn.dim - 1];
                        }
                    }
                }
                else if (ii_plus == count_parameter && TicksOut.AskSpeed[TicksIn.dim - 1] * 100000.0 > 0.0 && TicksOut.Ask_F_avg_3[TicksIn.dim - 1] > 0.0)
                {
                    if (TicksIn.Only_SELL_flg) { }
                    else
                    {
                        bool new_mode = false;
                        if (TicksIn.Stohastic_Param < Stohastic_BuyLimit && mode == "old")
                            new_mode = true;
                        else if ((TicksIn.Stohastic_Param < Stohastic_BuyLimit || (TicksIn.Stohastic_Param >= Stohastic_BuyLimit && TicksIn.StM5_733_3 >= TicksIn.StM5_733_2)) && mode == "new")
                            //else if ((TicksIn.StM5_733_3 >= TicksIn.StM5_733_2) && mode == "new")
                            new_mode = true;
                        else new_mode = false;

                        if (new_mode == true)
                        {
                            cur_in_flg = 1;
                            TicksOut.OpenOrderFLG = 1;
                            TicksOut.OpenASK = TicksIn.Ask[TicksIn.dim - 1];
                            TicksOut.OpenBID = TicksIn.Bid[TicksIn.dim - 1];
                        }
                    }
                }
            }
            else if (Math.Abs(cur_in_flg) != 2)
            {
                TicksOut.OpenOrderFLG = 0;

                if (cur_in_flg == -1 && TicksIn.AskIncrement[TicksIn.dim - 1] > Slice_Criteria_OUT)
                    TicksOut.MoreThanSlice++;
                if (cur_in_flg == 1 && TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT)
                    TicksOut.MoreThanSlice++;

                if (TicksIn.Count >= 9815038)
                    TicksIn.Count = TicksIn.Count;

                if (cur_in_flg == -1 && (
                                               (TicksIn.AskIncrement[TicksIn.dim - 1] > Slice_Criteria_OUT && (TicksIn.StM5_733_2 > TicksIn.StM5_733_1 || mode_out == "old" || TicksIn.AskIncrement[TicksIn.dim - 1] > 0.00040))
                                            || (TicksOut.ticks_activ_cnt > max_ticks_activ_cnt && max_ticks_activ_cnt != 0)
                                        ))
                {
                    cur_in_flg = -2;
                    TicksOut.MoreThanSlice = 0;
                }

                if (cur_in_flg == 1 && (
                    //(TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT && (TicksIn.StM5_733_2 < TicksIn.StM5_733_1 || mode_out == "old" || TicksIn.AskIncrement[TicksIn.dim - 1] < -0.00040))
                    //(TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT && (TicksIn.StM5_733_3 > TicksIn.StM5_733_2 || mode_out == "old" || TicksIn.AskIncrement[TicksIn.dim - 1] < -0.00040))
                    //(TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT || (TicksIn.StM5_733_0 < TicksIn.StM5_733_1 - 1 && (TicksIn.Bid[TicksIn.dim - 1] - TicksOut.OpenASK) * 100000 < 0.0 && TicksIn.AskIncrement[TicksIn.dim - 1] < -0.00008))
                                              (TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT)
                                           || (TicksOut.ticks_activ_cnt > max_ticks_activ_cnt && max_ticks_activ_cnt != 0)
                                       ))
                {
                    cur_in_flg = 2;
                    TicksOut.MoreThanSlice = 0;
                }
            }

            return cur_in_flg;
        }
Exemple #2
0
        //public static void Read_Indicators(WorkClasses.Ticks_In TicksIn)
        //{
        //    if (TicksIn.With_indicators == true)
        //    {
        //        string[] dataArray = TicksIn.dataArray[9].Split(' ');
        //        TicksIn.StM5_733_0 = Convert.ToDouble(TicksIn.dataArray[7]);
        //        TicksIn.StM5_733_0 = Convert.ToDouble(dataArray[0]);
        //        TicksIn.StM5_733_1 = Convert.ToDouble(dataArray[1]);
        //        TicksIn.StM5_733_2 = Convert.ToDouble(dataArray[2]);
        //        TicksIn.StM5_733_3 = Convert.ToDouble(dataArray[3]);
        //        TicksIn.StM5_733_4 = Convert.ToDouble(dataArray[4]);
        //        TicksIn.Stohastic_Param = TicksIn.StM5_733_3;
        //    }
        //}
        public static int Start_and_Stop_FLG(WorkClasses.Ticks_In TicksIn, WorkClasses.Ticks_Out TicksOut, double SELL_SPREAD, double BUY_SPREAD, int cur_in_flg, int count_parameter_sell, int count_parameter_buy, double Slice_Criteria_IN_SELL, double Slice_Criteria_IN_BUY,
            double Slice_Criteria_OUT_sell, double Slice_Criteria_OUT_buy, int max_ticks_activ_cnt_sell, int max_ticks_activ_cnt_buy, double Stohastic_SellLimit, double Stohastic_BuyLimit,
            string mode, string mode_out, int MaxCurProfitToClose_BUY, int MaxCurProfitToClose_SELL, int MaxCurStopLossToClose_BUY, int MaxCurStopLossToClose_SELL,
            double VolBigMassSELL_negative, double VolBigMassSELL_positiv, double VolBigMassBUY_positive, double VolBigMassBUY_negative, int BigMassCnt)
        {
            if (MaxCurProfitToClose_BUY == 0) MaxCurProfitToClose_BUY = 5000;
            if (MaxCurProfitToClose_SELL == 0) MaxCurProfitToClose_SELL = 5000;

            if (MaxCurStopLossToClose_BUY == 0) MaxCurStopLossToClose_BUY = -1000;
            if (MaxCurStopLossToClose_SELL == 0) MaxCurStopLossToClose_SELL = -1000;

            double[] cur_in_Array = new double[TicksIn.dim];
            for (int i = 0; i < TicksIn.dim; i++)
                cur_in_Array[i] = TicksOut.Ask_F_avg_6[i];

            if (TicksIn.Count == 9811215)
                TicksIn.Count = TicksIn.Count;

            if (BigMassCnt != 0)
            {
                for (int j = 0; j < BigMassCnt - 1; j++)
                    TicksIn.AskIncremBigMass[j] = TicksIn.AskIncremBigMass[j + 1];

                TicksIn.AskIncremBigMassSumm_Positive = TicksIn.AskIncremBigMassSumm_Negative = 0.0;
                TicksIn.AskIncremBigMass[BigMassCnt - 1] = TicksIn.AskIncrement[TicksIn.dim - 1];

                if (VolBigMassSELL_positiv == 0 && VolBigMassBUY_negative == 0)
                {
                    TicksIn.AskIncremBigMassSumm_Positive = TicksIn.AskIncremBigMass.Sum();
                    TicksIn.AskIncremBigMassSumm_Negative = TicksIn.AskIncremBigMass.Sum();
                }
                else
                {
                    for (int i = 0; i < BigMassCnt; i++)
                    {
                        if (TicksIn.AskIncremBigMass[i] >= 0) TicksIn.AskIncremBigMassSumm_Positive += TicksIn.AskIncremBigMass[i];
                        if (TicksIn.AskIncremBigMass[i] <= 0) TicksIn.AskIncremBigMassSumm_Negative += TicksIn.AskIncremBigMass[i];
                    }
                }

                TicksIn.AskIncremBigMassSumm_Positive *= 100000.0;
                TicksIn.AskIncremBigMassSumm_Negative *= 100000.0;

                //for (int j = 1; j <= BigMassCnt; j++)
                //{
                //    double[] temp = new double[j];
                //    for (int ij = 0; ij < j; ij++) temp[ij] = TicksIn.AskIncremBigMass[BigMassCnt - 1 - ij];

                //    if (Math.Abs(TicksIn.AskIncremBigMassSumm) < Math.Abs(temp.Sum() * 100000.0))
                //        TicksIn.AskIncremBigMassSumm = temp.Sum() * 100000.0;
                //}
            }

            if (cur_in_flg == 0)
            {
                int ii_minus = 0;
                int ii_plus = 0;
                for (int j = 0; j < count_parameter_buy; j++)
                {
                    if (cur_in_Array[TicksIn.dim - 1 - j] > Slice_Criteria_IN_BUY)
                    {
                        ii_plus++;
                    }
                }
                for (int j = 0; j < count_parameter_sell; j++)
                {
                    if (cur_in_Array[TicksIn.dim - 1 - j] < -Slice_Criteria_IN_SELL)
                    {
                        ii_minus++;
                    }
                }

                if ((
                        (ii_minus == count_parameter_sell && TicksOut.AskSpeed[TicksIn.dim - 1] * 100000.0 < 0.0 && TicksOut.Ask_F_avg_3[TicksIn.dim - 1] < 0.0)
                        || (TicksIn.AskIncremBigMassSumm_Negative < -VolBigMassSELL_negative && (TicksIn.AskIncremBigMassSumm_Positive <= VolBigMassSELL_positiv || VolBigMassSELL_positiv == 0) && BigMassCnt != 0)
                    )
                    && Math.Abs(TicksIn.AskIncrement[TicksIn.dim - 1]) > -0.00300
                    )
                {
                    if (TicksIn.Spread[TicksIn.dim - 1] < SELL_SPREAD)
                    {
                        if (TicksIn.Only_BUY_flg) { }
                        else
                        {
                            bool new_mode = false;
                            if (TicksIn.Stohastic_Param > Stohastic_SellLimit && mode == "old")
                                new_mode = true;
                            else if ((TicksIn.Stohastic_Param > Stohastic_SellLimit || (TicksIn.Stohastic_Param <= Stohastic_SellLimit && TicksIn.StM5_733_3 >= TicksIn.StM5_733_2)) && mode == "new")
                                //else if ((TicksIn.StM5_733_3 >= TicksIn.StM5_733_2) && mode == "new")
                                new_mode = true;
                            else new_mode = false;

                            if (new_mode == true)
                            {
                                cur_in_flg = -1;
                                TicksOut.OpenOrderFLG = 1;
                                TicksOut.OpenASK = TicksIn.Ask[TicksIn.dim - 1];
                                TicksOut.OpenBID = TicksIn.Bid[TicksIn.dim - 1];
                            }
                        }
                    }
                    else
                        ii_minus = ii_minus;
                }
                else if ((
                            (ii_plus == count_parameter_buy && TicksOut.AskSpeed[TicksIn.dim - 1] * 100000.0 > 0.0 && TicksOut.Ask_F_avg_3[TicksIn.dim - 1] > 0.0)
                            || (TicksIn.AskIncremBigMassSumm_Positive > VolBigMassBUY_positive && (TicksIn.AskIncremBigMassSumm_Negative >= -VolBigMassBUY_negative || VolBigMassBUY_negative == 0) && BigMassCnt != 0)
                         )
                        //&& Math.Abs(TicksIn.AskIncrement[TicksIn.dim - 1]) < 0.00300
                        && TicksOut.AskSpeed[TicksIn.dim - 1] * 100000.0 < 380.0
                        )
                {
                    if (TicksIn.Spread[TicksIn.dim - 1] < BUY_SPREAD)
                    {
                        if (TicksIn.Only_SELL_flg) { }
                        else
                        {
                            bool new_mode = false;
                            if (TicksIn.Stohastic_Param < Stohastic_BuyLimit && mode == "old")
                                new_mode = true;
                            else if ((TicksIn.Stohastic_Param < Stohastic_BuyLimit || (TicksIn.Stohastic_Param >= Stohastic_BuyLimit && TicksIn.StM5_733_3 >= TicksIn.StM5_733_2)) && mode == "new")
                                //else if ((TicksIn.StM5_733_3 >= TicksIn.StM5_733_2) && mode == "new")
                                new_mode = true;
                            else new_mode = false;

                            if (new_mode == true)
                            {
                                cur_in_flg = 1;
                                TicksOut.OpenOrderFLG = 1;
                                TicksOut.OpenASK = TicksIn.Ask[TicksIn.dim - 1];
                                TicksOut.OpenBID = TicksIn.Bid[TicksIn.dim - 1];
                            }
                        }
                    }
                    else
                        ii_minus = ii_minus;
                }
            }
            else if (Math.Abs(cur_in_flg) != 2)
            {
                TicksOut.OpenOrderFLG = 0;

                //if  (TicksIn.flag_ByCycle == false)
                //    Read_Indicators(TicksIn);

                if (cur_in_flg == -1 && TicksIn.AskIncrement[TicksIn.dim - 1] > Slice_Criteria_OUT_sell)
                    TicksOut.MoreThanSlice++;
                if (cur_in_flg == 1 && TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT_sell)
                    TicksOut.MoreThanSlice++;

                if (TicksIn.Count == 10458330)
                    TicksIn.Count = TicksIn.Count;
                //if (TicksIn.AskIncrement[TicksIn.dim - 1] > Slice_Criteria_OUT_sell)
                //    TicksIn.Count = TicksIn.Count;

                if (cur_in_flg == -1 && (
                                               (TicksIn.AskIncrement[TicksIn.dim - 1] > Slice_Criteria_OUT_sell && (TicksIn.StM5_733_2 > TicksIn.StM5_733_1 - TicksIn.SellCustomSthCorrection || mode_out == "old"
                                                        /*|| TicksIn.AskIncrement[TicksIn.dim - 1] > 0.00040*/))
                                            || (TicksOut.ticks_activ_cnt > max_ticks_activ_cnt_sell && max_ticks_activ_cnt_sell != 0)
                                            || ((TicksOut.local_Open_vs_Cur) * 100000 >= Convert.ToDouble(MaxCurProfitToClose_SELL))
                                            || ((TicksOut.local_Open_vs_Cur) * 100000 <= Convert.ToDouble(MaxCurStopLossToClose_SELL))
                                            //|| (TicksIn.StM1_733_0[0] < 10.0 && (TicksIn.StM1_733_0[0] - TicksIn.StM1_733_0[TicksIn.StM1_733_0.Length - 1]) >= 7.0 && TicksIn.StM5_733_1 <= 40.0 && TicksIn.StM5_733_2 < TicksIn.StM5_733_1)
                                        )
                                    && TicksIn.Spread[TicksIn.dim - 1] < 30.0
                                    //&& TicksOut.ticks_activ_cnt > 3 //Не проканало. Можно попробовать ввести еще проверку на состояние по индикаторам, т.к. при "3" есть ордер, который выходит в +240, хотя до этого в "-"
                    )
                {
                    cur_in_flg = -2;
                    TicksOut.MoreThanSlice = 0;

                    if (TicksIn.Spread[TicksIn.dim - 1] >= 20.0)
                        TicksIn.Spread = TicksIn.Spread;
                }

                if (cur_in_flg == 1 && (
                                              //(TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT && (TicksIn.StM5_733_2 < TicksIn.StM5_733_1 || mode_out == "old" || TicksIn.AskIncrement[TicksIn.dim - 1] < -0.00040))
                                              //(TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT && (TicksIn.StM5_733_3 > TicksIn.StM5_733_2 || mode_out == "old" || TicksIn.AskIncrement[TicksIn.dim - 1] < -0.00040))
                                              //(TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT || (TicksIn.StM5_733_0 < TicksIn.StM5_733_1 - 1 && (TicksIn.Bid[TicksIn.dim - 1] - TicksOut.OpenASK) * 100000 < 0.0 && TicksIn.AskIncrement[TicksIn.dim - 1] < -0.00008))
                                              (TicksIn.AskIncrement[TicksIn.dim - 1] < -Slice_Criteria_OUT_buy)
                                           || (TicksOut.ticks_activ_cnt > max_ticks_activ_cnt_buy && max_ticks_activ_cnt_buy != 0)
                                           || ((TicksOut.local_Open_vs_Cur) * 100000 >= Convert.ToDouble(MaxCurProfitToClose_BUY))
                                           || ((TicksOut.local_Open_vs_Cur) * 100000 <= Convert.ToDouble(MaxCurStopLossToClose_BUY))
                                           //|| (TicksIn.StM1_733_0[0] > 89.0 && (TicksIn.StM1_733_0[TicksIn.StM1_733_0.Length - 1] - TicksIn.StM1_733_0[0]) >= 7.0 && TicksIn.StM5_733_1 >= 60.0)
                                           //?|| (TicksIn.StM1_733_0[0] > 89.0 && (TicksIn.StM1_733_0.Max()- TicksIn.StM1_733_0.Min()) >= 7.0 && TicksIn.StM5_733_1 >= 60.0)
                                       )
                                    && TicksIn.Spread[TicksIn.dim - 1] < 30.0
                                    //&& TicksOut.ticks_activ_cnt > 3 //Не проканало. Можно попробовать ввести еще проверку на состояние по индикаторам, т.к. при "3" есть ордер, который выходит в +240, хотя до этого в "-"
                   )
                {
                    cur_in_flg = 2;
                    TicksOut.MoreThanSlice = 0;

                    if (TicksIn.Spread[TicksIn.dim - 1] >= 20.0)
                        TicksIn.Spread = TicksIn.Spread;
                }
            }

            return cur_in_flg;
        }
        public static int ChouseTheSet(int flg_F_avg_6, WorkClasses.Ticks_In TicksIn, WorkClasses.Ticks_Out TicksOut, int BaseCountToSkip, bool only_full_part)
        {
            //---FullScan + Limit + Ind-----------------------------------------------------------------------------------------------------------------------------
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 9, 9, 4.37, 4.37, 0.00011, 0.00011, 450, 450, 22, 89, "new", "new", 0, 0, 0, 0, 0); //3744	11195	12855	-267	-239	88
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 9, 9, 4.65, 4.65, 0.00009, 0.00009, 450, 450, 22, 89, "new", "new", 0, 0, 0, 0, 0, 0, 0); //3811	20743	22277	-181	-174	73
            //окейный медленный
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 11, 11, 3.44, 3.44, 0.00012, 0.00012, 0, 0, 22, 99, "old", "old", 0, 0, 0, 0, 0); //2695	10112	10112	-208	-208	85
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 11, 11, 4.30, 4.30, 0.00010, 0.00012, 0, 0, 22, 89, "new", "new", 0, 0, 0, 0, 0, 0, 0, 0, 0); //(!!!!!)3163	143741	143741	-64	-64	39
            //*
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 11, 11, 3.45, 3.45, 0.00009, 0.00009, 2310, 2310, 22, 89, "new", "new", 0, 0, 0, 0, 0); //3158	9931	16134	-247	-172	82
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 11, 11, 3.75, 3.75, 0.00009, 0.00009, 2310, 2310, 22, 89, "new", "new", 0, 0, 0, 0, 0); //3240	20937	57748	-151	-95	67
            //Only SELL +IND-------------------------------------------------------------------------------------------------------------------------------------
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 10, 10, 3.00, 3.00, 0.00014, 0.00014, 770, 770, 26, 97, "new", "new", 0, 0, 0, 0, 0,0,0); //4564	10030	12372	-362	-306	65
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 10, 10, 3.03, 3.03, 0.00015, 0.00015, 2000, 2000, 22, 99, "old", "old", 0, 0, 0, 0, 0,0,0); //3249	13419	13419	-202	-202	61

            /*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
            /*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 10, 10, 3.00, 4.52, 0.00014, 0.00012, 725, 250, 30, 97, "new", "new", 350, 620, 300.0, 0, 225.0, 0, 9); //8161	15028	19976	-490	-414	123
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 10, 9, 3.08, 4.68, 0.00013, 0.00013, 725, 250, 30, 97, "new", "new", 350, 620, 300.0, 225.0, 9); //7746	14891	14891	-467	-467	124
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 10, 10, 3.00, 4.62, 0.00013, 0.00012, 725, 250, 30, 97, "new", "new", 350, 620, 300.0, 225.0, 9); //7684	25946	46598	-341	-265	122
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 20, flg_F_avg_6, 10, 10, 3.00, 4.72, 0.00014, 0.00012, 725, 250, 30, 97, "new", "new", 350, 620, 300.0, 225.0, 9); //8169	23342	37884	-382	-306	119

            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 18, flg_F_avg_6, 11, 10, 3.59, 4.72, 13E-5, 11E-5, 725, 275, 30, 94, "new", "new", 350, 350, 300.0, 225.0, 9); //5569	38520	84001	-203	-151	86  (Хорош после 09.2013)

            //---Можно изменить правило выхода на: "TicksIn.StM5_733_2 > TicksIn.StM5_733_1 - 5.0"---//
            TicksIn.SellCustomSthCorrection = 0.0;
            TicksIn.SellCustomSthCorrection = 5.0;

            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 10, 3.09, 4.70, 13E-5, 11E-5, 800, 275, 30, 94, "new", "new", 350, 350, 0, 0, 0, 0, 0); //5049	11017	11017	-375	-375	96
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 10, 3.09, 4.70, 13E-5, 11E-5, 800, 275, 30, 94, "new", "new", 350, 350, 200, 60, 125, 30, 6); //6892	21333	21333	-333	-333

            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 11, 3.09, 4.34, 13E-5, 12E-5, 775, 375, 30, 94, "new", "new", 350, 350, 240, 0, 180, 0, 7); //7089	30053	30053	-292	-292
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 11, 3.09, 4.78, 13E-5, 12E-5, 775, 275, 30, 94, "new", "new", 350, 350, 240, 0, 180, 0, 7); //6970	28949	28949	-292	-292	124

            //flg_F_avg_6 = StrtStp.Start_and_StopFLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 10, 3.09, 4.70, 13E-5, 11E-5, 800, 275, 30, 94, "new", "new", 350, 350, 350, 0, 180, 0, 6); //7455	30433	72837	-307	-219	127
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 10, 3.09, 4.70, 13E-5, 11E-5, 800, 275, 30, 94, "new", "new", 350, 350, 220, 0, 180, 0, 6); //7443	18892	18892	-388	-388	139
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 10, 3.15, 4.85, 13E-5, 11E-5, 800, 275, 30, 94, "new", "new", 350, 350, -0, -0, 220, 0, 180, 0, 6); //(!)7281	82381	82381	-204	-204	130
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 10, 3.50, 3.90, 11E-5, 11E-5, 800, 275, 30, 94, "new", "new", 350, 350, 220, 0, 180, 0, 6); //5082	22147	36993	-234	-182	160

            //===После перевода на ECN 22.07.14===
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 0, flg_F_avg_6, 10, 0, 4.20, 0.0, 17E-5, 0E-5, 0, 0, 22, 82, "new", "new", 0, 300, -0, -0, 0, 0, 0, 0, 0); //(!)3334	18833	59525	-166	-96	39
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 0, 5.60, 0.0, 10E-5, 0E-5, 1200, 0, 30, 94, "new", "new", 0, 350, 0, 0, 0, 0, 0); //714	8863	10290	-57	-49	28 (но нет)

            //===НОВАЯ ИСТОРИЯ 2015 ===//
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 25, 21, flg_F_avg_6, 12, 9, 5.5, 4.5, 29E-5, 28E-5, 0, 0, 19, 96, "new", "new", 0, 300, -0, -600, /**/ 0, 0, 0, 0, 0); //5796	5967	7367	-809	-612
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 25, 21, flg_F_avg_6, 12, 9, 7.1, 4.5, 27E-5, 28E-5, 0, 0, 19, 86, "new", "new", 0, 150, -0, -0, /**/ 0, 0, 0, 0, 0); //5668	9092	24908	-494	-251
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 25, 21, flg_F_avg_6, 12, 9, 7.0, 4.5, 29E-5, 28E-5, 0, 0, 19, 96, "new", "new", 0, 150, -0, -500, /**/ 0, 0, 0, 0, 0); //5213	6230	10630	-691	-389
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 25, 21, flg_F_avg_6, 12, 9, 7.1, 4.5, 29E-5, 28E-5, 0, 0, 19, 86, "new", "new", 0, 150, -0, -450, /**/ 0, 0, 0, 0, 0); //5030	7887	13930	-494	-300
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 25, 21, flg_F_avg_6, 12, 9, 7.5, 4.5, 27E-5, 28E-5, 0, 0, 19, 86, "new", "new", 0, 200, -0, -0, /**/ 0, 0, 0, 0, 0); //4537	8243	15959	-428	-251
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 25, 21, flg_F_avg_6, 13, 9, 6.50, 4.5, 29E-5, 28E-5, 0, 0, 19, 96, "new", "new", 0, 200, -0, -500, /**/ 0, 0, 0, 0, 0); //4392	6944	6944	-502	-502 хорош в конце июля 2015
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 9, 9.50, 4.5, 28E-5, 28E-5, 0, 0, 19, 96, "new", "new", 150, 120, -0, -350, /**/100, 300, 100, 300, 9); //4300	4777	5684	-888	-636 bigmass
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 9, 9.50, 4.5, 28E-5, 28E-5, 0, 0, 19, 96, "new", "new", 150, 120, -0, -350, /**/ 0, 0, 0, 0, 0); //3748	4380	4982	-950	-698

            flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 9, 9.50, 4.5, 28E-5, 28E-5, 0, 0, 19, 96, "new", "new", 150, 120, -0, -350, /**/ 0, 0, 0, 0, 0);

            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 9, 9.50, 4.5, 28E-5, 28E-5, 0, 0, 19, 96, "new", "new", 150, 120, -0, -350, /**/ 0, 0, 0, 0, 0); //На этом можно прогонять подбор параметров определения трендов
            //flg_F_avg_6 = StrtStp.Start_and_Stop_FLG(TicksIn, TicksOut, 35, 21, flg_F_avg_6, 10, 11, 9.50, 6.5, 28E-5, 30E-5, 0, 0, 19, 96, "new", "new", 200, 120, -0, -350, /**/ 0, 0, 0, 0, 0); //Buy+Sell 6812	4614	14773	-1536	-374	123

            if (TicksIn.Count == 1 || (TicksIn.Count == BaseCountToSkip+1 && only_full_part == true))
                TicksIn.Count = TicksIn.Count;

            return flg_F_avg_6;
        }