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; } } }
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; } } }
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; } } }