Как правильно добавить сигналку (sig в коде ниже), чтобы ее значение учитывалось при отправке транзакций?
В текущем виде скрипт работать не хочет.
while stopped==false do
sig=1 --значение по умолчанию
if условие and sig==1 then
sig=2 --после транзакции изменяется на 2
отправка транзакции
elseif условие and flag==2 then
sig=1 --после транзакции меняется на исходную 1
отправка транзакции
end
end
Разница с моим кодом в том, что отправку транзакции я вынес из тела логического перехода. Внутри if — end только формируются флаги (у Вас sig):
if continueTrend == 0 then
if Bu == true then
if oFlag == 1 then
Bu = false
else
oFlag = 1
end
end
if Se == true then
if oFlag == 2 then
Se = false
else
oFlag = 2
end
end
end
Выполняемая задача: предотвратить повторные отправки ботом сигналов.
Bu — последний сигнал на покупку в общем массиве сигналов;
Se — последний сигнал на продажу в общем массиве сигналов.
Массив сигналов формируется при запуске скрипта и постоянно дополняется новыми сигналами.
Если Вы знакомы со скриптом прогрммирования в AmiBroker, то поймете идею функции ExRem.
Eugene Bright, да, я знаком с этой функцией ExRem, но Ваш вариант как-то для моего уровня сложноват...
А если в верхней строке только убрать исходное значение, то такой вариант будет работать?
Врач-бондиатОр, с флагами всегда возня… Можно легко заблудиться.
Здесь главное — не сокращать код, а писать его очень подробно. И не втискивать какие-то другие команды и операторы в тело обработки флагов.
Исходные значения лучше выносить за кусок кода обработки флага.
Кароч, кусок кода обработки флагов должен работать только с флагами. Все остальные команды, которые используют результат значения флага, нужно писать ВНЕ этого куска.
Врач-бондиатОр, во-первых, как правильно заметил Cubigator,
«sig=1 --значение по умолчанию» надо вынести за цикл while.
Во-вторых, если транзакция в первом условии должна принимать sig=1, а транзакция во-втором условии должна принимать sig=2, то это и надо прописывать в условиях, кроме того, надо поменять местами операции присвоения и отправки транзакций, если есть желание менять значение сигналки именно после транзакций.
Как-то так:
sig=1 --значение по умолчанию
while stopped==false do
if условие and sig==1 then
отправка транзакции
sig=2 --после транзакции изменяется на 2
elseif условие and flag==2 and sig==2 then
отправка транзакции
sig=1 --после транзакции меняется на исходную 1
end
end
Озон Фармацевтика МСФО 2025 г. - почти идеальный результат
Озон фармацевтика опубликовала финансовые результаты за 2025 год. За 2025 год выручка компании выросла на 24% до 31,6 млрд рублей. Валовая прибыль прибавила 29% до 15,1 млрд руб.,...
GBP/USD: Звездный час продавцов — приговор бычьим надеждам
Британский фунт завершил пятничные торги формированием паттерна «падающая звезда», четко оттолкнувшись от точки пересечения ключевых технических линий. Сопротивление здесь носит комплексный...
В каких облигациях и акциях Иволга Капитал маркет-мейкер?
👉 Наш канал в MAX 👈
👉 Чат Иволги в MAX 👈
Обновляем таблицу маркетируемых ценных бумаг. Она не совсем полная для акций, 2 эмитента не дали согласия на их упоминание...
X5 операционные результаты 1 кв. 2026 г. - рост выручки ниже прогноза
X5 опубликовала операционные результаты за 1 квартал 2026 года. Выручка выросла на 11,3% до 1,19 трлн рублей. Сопоставимая выручка прибавила 6,1% при росте среднего чека на 7,9% и падении...
Ну вот, получается по сумме голоса считаются. Тогда облигационный долг это большинство, тогда только через ОСВО или суд просто не утвердит такое решение
А кто нибудь структуру долгов Евротранса изучал? Знаете, что в долгосрочных обязательствах 19 миллиардов это 15 летняя аренда, а в краткосрочных она всего 1,5 лярда в год? И в краткосрочную задолженно...
Ygrek, слабые всегда будут в плену у сильных. Стать сырьевым придатком — это не выбор «торговать или нет», это следствие того, что ты не можешь сам произвести инструмент для работы. Станкостроение ...
Озон Фармацевтика МСФО 2025 г. - почти идеальный результат
Озон фармацевтика опубликовала финансовые результаты за 2025 год.За 2025 год выручка компании выросла на 24% до 31,6 млрд рублей.Валовая п...
Биржевые цены на нефть и газ выросли на фоне обострения в Иране
По данным лондонской бирже ICE Futures, стоимость июньских фьючерсов на нефть выросла на 6,7% до $96,42. Цена майского фьючерса на...
if continueTrend == 0 then
if Bu == true then
if oFlag == 1 then
Bu = false
else
oFlag = 1
end
end
if Se == true then
if oFlag == 2 then
Se = false
else
oFlag = 2
end
end
end
Выполняемая задача: предотвратить повторные отправки ботом сигналов.
Bu — последний сигнал на покупку в общем массиве сигналов;
Se — последний сигнал на продажу в общем массиве сигналов.
Массив сигналов формируется при запуске скрипта и постоянно дополняется новыми сигналами.
Если Вы знакомы со скриптом прогрммирования в AmiBroker, то поймете идею функции ExRem.
А если в верхней строке только убрать исходное значение, то такой вариант будет работать?
Здесь главное — не сокращать код, а писать его очень подробно. И не втискивать какие-то другие команды и операторы в тело обработки флагов.
Исходные значения лучше выносить за кусок кода обработки флага.
Кароч, кусок кода обработки флагов должен работать только с флагами. Все остальные команды, которые используют результат значения флага, нужно писать ВНЕ этого куска.
Врач-бондиатОр, во-первых, как правильно заметил Cubigator,
«sig=1 --значение по умолчанию» надо вынести за цикл while.
Во-вторых, если транзакция в первом условии должна принимать sig=1, а транзакция во-втором условии должна принимать sig=2, то это и надо прописывать в условиях, кроме того, надо поменять местами операции присвоения и отправки транзакций, если есть желание менять значение сигналки именно после транзакций.
Как-то так:
sig=1 --значение по умолчанию
while stopped==false do
if условие and sig==1 then
отправка транзакции
sig=2 --после транзакции изменяется на 2
elseif условие and flag==2 and sig==2 then
отправка транзакции
sig=1 --после транзакции меняется на исходную 1
end
end