Дочерняя стратегия вызывает метод родительской
Atom Ответить
23.12.2011


У меня одна стратегия содержит в себе дочернию(другую) стратегию.
У меня есть лог, который я не могу понять.
AR Buy CancelOrder StopAggPutOrder 76797701
AR - дочерняя стартегия, она имеет метод CancelOrder, но не имеет метода StopAggPutOrder.
Метод StopAggPutOrder принадлежит родительской стратегии. при этом, судя по логу, метод CancelOrder, был вызва из метода StopAggPutOrder. т.к. Метод CancelOrder принимет как аргуметнт имя вызвавшего его метода.
И после этого вся программа закрылась, не выдав никакого сообщения об ошибке.
Да, метод CancelOrder попятался отменить исполненную заявку, но почему небыло никакого сообщения?
Код

public virtual void Do_CancelOrder(string callingMethod)
		{

			MarkOrderCanceledId("CancelOrder " + callingMethod);
			if(_order != null){
				try{
					this.Trader.CancelOrder(_order);
				}
				catch(Exception ex){
					string sessionStopped = "Сейчас эта сессия не идет";
					if(ex.Message.Contains(sessionStopped)){
						
					}
					else{
						throw ex;
					}
				}
			}
		}

на событие OnLog я подписан - там пусто.

Теги:


Спасибо:




14 Ответов
Alexander

Фотография
Дата: 23.12.2011
Ответить


OnError
Спасибо:

vader

Фотография
Дата: 26.12.2011
Ответить


OnError тоже молчит
Автор топика
Спасибо:

Alexander

Фотография
Дата: 26.12.2011
Ответить


Как вы понимаете что программа закрылась? В чём это выражается?
Посмотрите на событие Strategy.Error
Спасибо:

vader

Фотография
Дата: 26.12.2011
Ответить


"Как вы понимаете что программа закрылась? В чём это выражается?"
Окно программы открыто и в какой-то момент она просто исчезает и её нет.

На Error подпишусь, ещё не успел новую версию скачать.

Ещё одна проблема, сделка не попала в стратегию.
На Strategy.NewMyTrades подписан, он не получил последнюю сделку.
При этом trader.NewMyTrades эу сделку получил
Автор топика
Спасибо:

Alexander

Фотография
Дата: 26.12.2011
Ответить


Вы кидаете exception из throw.
Зачем? Где-то выше вы его перехватываете?
Спасибо:

vader

Фотография
Дата: 26.12.2011
Ответить


"Вы кидаете exception из throw.
Зачем? Где-то выше вы его перехватываете?"
пока не перехватываю, но потом буду.
Кидаю я его, потому-что при невозможности снять заявки, робот должен остановится.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 26.12.2011
Ответить


Так и останавливайте его работу.
Или перехватывайте exception выше.

Иначе ничего удивительно в таком завершении работы нет. :)
Спасибо:

frontman

Фотография
Дата: 26.12.2011
Ответить


А приложение вы как запускаете? Просто если не из студии и у вас эксепшн не перехватывается, то приложение закроется конечно..
Спасибо:

frontman

Фотография
Дата: 26.12.2011
Ответить


Я опоздал))
Спасибо:

vader

Фотография
Дата: 26.12.2011
Ответить


Я запускаю из SharpDevelop в Debug.
я надеюсь, что он мне что-нибудь скажет, есди произошла ошибка.

"А приложение вы как запускаете? Просто если не из студии и у вас эксепшн не перехватывается, то приложение закроется конечно.. "
проблема не стольько в том, что оно закрывается, а вот, что оно ничего не говорит при этом. Даже не предлгает исвать решения проблемы в интернете.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 26.12.2011
Ответить


Совет перехватывать Exception или вместо того чтоб его кидать - что-либо выводить, остаётся в силе.
Спасибо:

vader

Фотография
Дата: 26.12.2011
Ответить


"Совет перехватывать Exception или вместо того чтоб его кидать - что-либо выводить, остаётся в силе."
Уже сделал - WriteDiagnostics(ex.Message);.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 26.12.2011
Ответить


Помогло?
Спасибо:

frontman

Фотография
Дата: 26.12.2011
Ответить


На студию надейся, а сам не плошай)))
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy