← 戻る

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

У меня одна стратегия содержит в себе дочернию(другую) стратегию. У меня есть лог, который я не могу понять. 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
Alexander

OnError

vader
vader 著者

OnError тоже молчит

Alexander
Alexander

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

vader
vader 著者

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

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

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

Alexander
Alexander

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

vader
vader 著者

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

Alexander
Alexander

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

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

frontman
frontman

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

frontman
frontman

Я опоздал))

vader
vader 著者

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

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

Alexander
Alexander

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

vader
vader 著者

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

Alexander
Alexander

Помогло?

frontman
frontman

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