Exemplo n.º 1
0
 public void EventHandler_1_type2(object[] param)
 {
     if (MinValueOpen_1.Count == divergenceOpen + 1)
     {
         MinValueOpen_1.RemoveAt(0);
     }
     if (MaxValueOpen_1.Count == divergenceOpen + 1)
     {
         MaxValueOpen_1.RemoveAt(0);
     }
     if (param[0].ToString() == "Min")
     {
         lastvalue = LastZigZagValue.MIN;
         double      gapValue   = (double)param[1];
         double      price      = (double)param[2];
         DateTime    time       = (DateTime)param[3];
         ProbaStruct Temp_value = new ProbaStruct()
         {
             GapValue = gapValue, price = price, time = time
         };
         if (MinValueOpen_1.Count != 0)
         {
             if (openpos == OpenPosition.SHORT)
             {
                 if (can_expand)
                 {
                     if (Temp_value.GapValue > MinValueOpen_1.Last().GapValue&& Temp_value.price > MinValueOpen_1.Last().price)
                     {
                         expand_position_short = true;
                     }
                     else
                     {
                         expand_position_short = false;
                     }
                 }
             }
             if (openpos == OpenPosition.NONE)
             {
                 FunTradeWorker.DivergenceCheck(false, MinValueOpen_1, Temp_value, ref divergence_min_open, ref openshort, logger, name, time, LoggNeeded, true);
             }
         }
         MinValueOpen_1.Add(Temp_value);
         MinValueClose_1.Add(Temp_value);
         if (divergenceOpen == 0)
         {
             if (openpos == OpenPosition.NONE)
             {
                 openshort = true;
                 OpenShort = Temp_value;
             }
             if (openpos == OpenPosition.SHORT)
             {
                 expand_position_short = true;
             }
         }
         else
         if (divergence_min_open == divergenceOpen)
         {
             openshort  = true;
             OpenShort  = MinValueOpen_1.Last();
             CrashShort = MinValueOpen_1[0];
             string message = String.Format("{0} Решение открытия позиции Шорт. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_min_open = 0;
         }
     }
     if (param[0].ToString() == "Max")
     {
         lastvalue = LastZigZagValue.MAX;
         double      gapValue   = (double)param[1];
         double      price      = (double)param[2];
         DateTime    time       = (DateTime)param[3];
         ProbaStruct Temp_value = new ProbaStruct()
         {
             GapValue = gapValue, price = price, time = time
         };
         if (MaxValueOpen_1.Count != 0)
         {
             if (openpos == OpenPosition.LONG)
             {
                 if (can_expand)
                 {
                     if (Temp_value.GapValue < MaxValueOpen_1.Last().GapValue&& Temp_value.price < MaxValueOpen_1.Last().price)
                     {
                         expand_position_long = true;
                     }
                     else
                     {
                         expand_position_long = false;
                     }
                 }
             }
             if (openpos == OpenPosition.NONE)
             {
                 FunTradeWorker.DivergenceCheck(true, MaxValueOpen_1, Temp_value, ref divergence_max_open, ref openlong, logger, name, time, LoggNeeded, true);
             }
         }
         MaxValueOpen_1.Add(Temp_value);
         if (divergenceOpen == 0)
         {
             if (openpos == OpenPosition.NONE)
             {
                 OpenLong = Temp_value;
                 openlong = true;
             }
             if (openpos == OpenPosition.LONG)
             {
                 expand_position_short = true;
             }
         }
         else
         if (divergence_max_open == divergenceOpen)
         {
             openlong  = true;
             OpenLong  = MaxValueOpen_1.Last();
             CrashLong = MaxValueOpen_1[0];
             string message = String.Format("{0} Решение открытия позиции Лонг. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_max_open = 0;
         }
     }
 }
Exemplo n.º 2
0
 void EventHelper_2_type2(object[] param, ref List <ProbaStruct> MinValueClose, ref List <ProbaStruct> MaxValueClose)
 {
     if (MinValueClose.Count == divergenceClose + 1)
     {
         MinValueClose.RemoveAt(0);
     }
     if (MaxValueClose.Count == divergenceClose + 1)
     {
         MaxValueClose.RemoveAt(0);
     }
     if (param[0].ToString() == "Min")
     {
         lastvalue = LastZigZagValue.MIN;
         double      gapValue   = (double)param[1];
         double      price      = (double)param[2];
         DateTime    time       = (DateTime)param[3];
         ProbaStruct Temp_value = new ProbaStruct()
         {
             GapValue = gapValue, price = price, time = time
         };
         if (MinValueClose.Count != 0)
         {
             if (openpos == OpenPosition.LONG)
             {
                 FunTradeWorker.DivergenceCheck(false, MinValueClose, Temp_value, ref divergence_min_close, ref closelong, logger, name, time, LoggNeeded, false);
             }
         }
         MinValueClose.Add(Temp_value);
         if (divergenceClose == 0)
         {
             if (OpenPosition.LONG == openpos)
             {
                 CloseLong = Temp_value;
                 closelong = true;
             }
         }
         else
         if (divergence_min_close == divergenceClose)
         {
             closelong = true;
             CloseLong = MinValueClose.Last();
             string message = String.Format("{0} Решение закрыть позиции Лонг. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_min_close = 0;
         }
     }
     if (param[0].ToString() == "Max")
     {
         lastvalue = LastZigZagValue.MAX;
         double      gapValue   = (double)param[1];
         double      price      = (double)param[2];
         DateTime    time       = (DateTime)param[3];
         ProbaStruct Temp_value = new ProbaStruct()
         {
             GapValue = gapValue, price = price, time = time
         };
         if (MaxValueClose.Count != 0)
         {
             if (openpos == OpenPosition.SHORT)
             {
                 FunTradeWorker.DivergenceCheck(true, MaxValueClose, Temp_value, ref divergence_max_close, ref closeshort, logger, name, time, LoggNeeded, false);
             }
         }
         MaxValueClose.Add(Temp_value);
         if (divergenceClose == 0)
         {
             if (openpos == OpenPosition.SHORT)
             {
                 CloseShort = Temp_value;
                 closelong  = true;
             }
         }
         else
         if (divergence_max_close == divergenceClose)
         {
             closeshort = true;
             CloseShort = MaxValueClose.Last();
             string message = String.Format("{0} Решение закрыть позиции Шорт. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_max_close = 0;
         }
     }
 }
Exemplo n.º 3
0
 void EventHelper(object[] param, List <ProbaStruct> MinValueOpen, List <ProbaStruct> MinValueClose, List <ProbaStruct> MaxValueOpen, List <ProbaStruct> MaxValueClose)
 {
     if (MinValueOpen.Count == divergenceOpen + 1)
     {
         MinValueOpen.RemoveAt(0);
     }
     if (MinValueClose.Count == divergenceClose + 1)
     {
         MinValueClose.RemoveAt(0);
     }
     if (MaxValueOpen.Count == divergenceOpen + 1)
     {
         MaxValueOpen.RemoveAt(0);
     }
     if (MaxValueClose.Count == divergenceClose + 1)
     {
         MaxValueClose.RemoveAt(0);
     }
     if (param[0].ToString() == "Min")
     {
         lastvalue = LastZigZagValue.MIN;
         double      gapValue   = (double)param[1];
         double      price      = (double)param[2];
         DateTime    time       = (DateTime)param[3];
         ProbaStruct Temp_value = new ProbaStruct()
         {
             GapValue = gapValue, price = price, time = time
         };
         if (MinValueOpen.Count != 0)
         {
             if (openpos == OpenPosition.SHORT)
             {
                 if (can_expand)
                 {
                     if (Temp_value.GapValue > MinValueOpen.Last().GapValue&& Temp_value.price > MinValueOpen.Last().price)
                     {
                         expand_position_short = true;
                     }
                     else
                     {
                         expand_position_short = false;
                     }
                 }
             }
             FunTradeWorker.CorvergenceCheck(MinValueOpen, MaxValueOpen, Temp_value, gapValue, price, time,
                                             ref ConvergenMin, ref convergen_min, Model.Project.Outputs[gappos].Value,
                                             ratio, ref PositionShort, locker, tradeTerminal, ref openpos, logger, name, LoggNeeded);
             if (openpos == OpenPosition.NONE)
             {
                 FunTradeWorker.DivergenceCheck(false, MinValueOpen, Temp_value, ref divergence_min_open, ref openshort, logger, name, time, LoggNeeded, true);
             }
         }
         if (MinValueClose.Count != 0)
         {
             if (openpos == OpenPosition.LONG)
             {
                 FunTradeWorker.DivergenceCheck(false, MinValueClose, Temp_value, ref divergence_min_close, ref closelong, logger, name, time, LoggNeeded, false);
             }
         }
         MinValueOpen.Add(Temp_value);
         MinValueClose.Add(Temp_value);
         if (divergenceOpen == 0)
         {
             if (openpos == OpenPosition.NONE)
             {
                 openshort = true;
                 OpenShort = Temp_value;
             }
             if (openpos == OpenPosition.SHORT)
             {
                 expand_position_short = true;
             }
         }
         else
         if (divergence_min_open == divergenceOpen)
         {
             openshort  = true;
             OpenShort  = MinValueOpen.Last();
             CrashShort = MinValueOpen[0];
             string message = String.Format("{0} Решение открытия позиции Шорт. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_min_open = 0;
         }
         if (divergenceClose == 0)
         {
             if (openpos == OpenPosition.LONG)
             {
                 CloseLong = Temp_value;
                 closelong = true;
             }
         }
         else
         if (divergence_min_close == divergenceClose)
         {
             closelong = true;
             CloseLong = MinValueClose.Last();
             string message = String.Format("{0} Решение закрыть позиции Лонг. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_min_close = 0;
         }
     }
     if (param[0].ToString() == "Max")
     {
         lastvalue = LastZigZagValue.MAX;
         double      gapValue   = (double)param[1];
         double      price      = (double)param[2];
         DateTime    time       = (DateTime)param[3];
         ProbaStruct Temp_value = new ProbaStruct()
         {
             GapValue = gapValue, price = price, time = time
         };
         if (MaxValueOpen.Count != 0)
         {
             if (openpos == OpenPosition.LONG)
             {
                 if (can_expand)
                 {
                     if (Temp_value.GapValue < MaxValueOpen.Last().GapValue&& Temp_value.price < MaxValueOpen.Last().price)
                     {
                         expand_position_long = true;
                     }
                     else
                     {
                         expand_position_long = false;
                     }
                 }
             }
             FunTradeWorker.CorvergenceCheck(MaxValueOpen, MinValueOpen, Temp_value, gapValue, price, time, ref ConvergenMax, ref convergen_max,
                                             Model.Project.Outputs[gappos].Value, ratio, ref PositionLong, locker, tradeTerminal, ref openpos, logger, name, LoggNeeded);
             if (openpos == OpenPosition.NONE)
             {
                 FunTradeWorker.DivergenceCheck(true, MaxValueOpen, Temp_value, ref divergence_max_open, ref openlong, logger, name, time, LoggNeeded, true);
             }
         }
         if (MaxValueClose.Count != 0)
         {
             if (openpos == OpenPosition.SHORT)
             {
                 FunTradeWorker.DivergenceCheck(true, MaxValueClose, Temp_value, ref divergence_max_close, ref closeshort, logger, name, time, LoggNeeded, false);
             }
         }
         MaxValueOpen.Add(Temp_value);
         MaxValueClose.Add(Temp_value);
         if (divergenceOpen == 0)
         {
             if (openpos == OpenPosition.NONE)
             {
                 openlong = true;
                 OpenLong = Temp_value;
             }
             if (openpos == OpenPosition.LONG)
             {
                 expand_position_short = true;
             }
         }
         else
         if (divergence_max_open == divergenceOpen)
         {
             openlong  = true;
             OpenLong  = MaxValueOpen.Last();
             CrashLong = MaxValueOpen[0];
             string message = String.Format("{0} Решение открытия позиции Лонг. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_max_open = 0;
         }
         if (divergenceClose == 0)
         {
             if (openpos == OpenPosition.SHORT)
             {
                 CloseShort = Temp_value;
                 closelong  = true;
             }
         }
         else
         if (divergence_max_close == divergenceClose)
         {
             closeshort = true;
             CloseShort = MaxValueClose.Last();
             string message = String.Format("{0} Решение закрыть позиции Шорт. Ждем локальную дивергенцию... ", name);
             //if (LoggNeeded)
             //    logger.LogEvent(Temp_value.time, message);
             divergence_max_close = 0;
         }
     }
 }