Врач-бондиатОр
Врач-бондиатОр личный блог
10 июня 2023, 18:15

Вопрос по lua

Всем привет!

Вопрос к знатокам Lua.

Как правильно добавить сигналку (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
11 Комментариев
  • Eugene Bright
    10 июня 2023, 18:34
    Разница с моим кодом в том, что отправку транзакции я вынес из тела логического перехода. Внутри 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
        10 июня 2023, 20:25
        Врач-бондиатОр, в верхней строке Вашего кода или моего?

          • Eugene Bright
            10 июня 2023, 21:14
            Врач-бондиатОр, с флагами всегда возня… Можно легко заблудиться.
            Здесь главное — не сокращать код, а писать его очень подробно. И не втискивать какие-то другие команды и операторы в тело обработки флагов.
            Исходные значения лучше выносить за кусок кода обработки флага.

            Кароч, кусок кода обработки флагов должен работать только с флагами. Все остальные команды, которые используют результат значения флага, нужно писать ВНЕ этого куска.
  • Vkt
    10 июня 2023, 18:33
    Может попробовать flag==2 заменить  на sig==2
  • Cubigator
    10 июня 2023, 20:31
    "sig=1 --значение по умолчанию" вынеси за цикл while, иначе у тебя sig всегда равно 1
  • BITE4SAVE
    11 июня 2023, 07:18

    Врач-бондиатОр, во-первых, как правильно заметил 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

     

     

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн