English Chinese French German Italian Portuguese Spanish
Войти
  1. ВКонтакте
  2. Facebook
  1. Официальный форум 1b bot. » Последние ответы
Новые публикации Скрыть панель справаПоказать панель справа

Последние ответы

Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

версия 3 Советника весьма точно предлагает моменты для покупки и продажи, но тут начинает играть сама биржа ибо это оказываются эти точки можно считать точками "равновесия" ниже, который бирже по какаим то причинам не выгодно отпускать курс.
уже 3 день выставленые мои ордера в нижних точках тут же заслоняются стенами от 4000 до 6000 zrx. не могу в этих точках сделать в нужный момент сделку, биржа просто не дает.
яркий пример ниже - мой ордер объемом 250, впереди 2-е стенки.
биржа просто ждет когда всем надоест и если ничего внешнего не произойдет, то курс пойдет на верх, а ордер мой останется не выполненым.


конечно, можно сразу купить по ставке продающих, но разница в 0.8% существенна.
в принципе есть тактический ход для таких ситуаций., но я еще ни разу им не пользовался.

Советник "видит" пока на 30-45-60 минут не более.

Последний раз редактировал Igor F P 21:11, 04.08.2018
Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

Не все возможно описать алгоритмами для бота, ибо не хватает и знаний и возможностей самого бота и его языка. В процессе создания сценариев "Око" и "Волна" стало ясно, что невозможно описать алгоритмом и кодами все возможные варианты падениий и взлетов, все равно AI не получится :).
Принял решение в дополнение сценариям создать некого помошника для человека в случае ручной торговли и пусть типа человек начинает думать и помогать боту.
Назовем его Советник. Делал я его долго, весьма, но его возможности превосходят возможности сценариев (по крайней мере на 1ббот) существенно, в первую очередь за счет участия человека, ибо ему все равно приходится часть инфы обрабатывать.
На данный момент еще не все "отполировано", есть "шум" сигнальный, , но я уже провел 2-е сделки по его рекомендациям. каждая из которых была разбита на 2-е части (ибо Советник пока выдает несколько сигналов, их еще "полировать" надо в т.ч. для сторонних пользователей).
На черном фоне курс крипты.
Как видно Советник дал сигнал на покупку в самом низу, а на продажу по его рекомендации был выставлен ордер и ... была "поймана" верхня тень этой свечи, точнее была создана эта тень!!!
После чего началось падение, о чем Советник также сообщил.



Планиреутся, что как только все сигналы будут "связаны" и отполированы, будет организован подписной канал в ютубе (при чем инфа будет на любую биржу с любой парой).
Срок- думаю месяц.

В результате днем может торговать человек, а ночь на "вахту" заступает бот :)

Последний раз редактировал Igor F P 18:56, 31.07.2018
Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

Версия 2.03 готова, в течении пары часов будет "упакована" и отправлена пользователям.
Много улучшений типа новый алгоритм по поиску точки buy около локального дна, новый алгоритм покупки при росте курса, коэффициент "ускорения" покупок и т.д.

Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

Прогресс должен приносить пользу, иначе это уже не прогресс.
Не все просто.
Выложить, что уже "собрано", так висяки на верху увеличаться.
Будет решение, работаю.
Новичок
  1. Оффлайн
  2. Посетители
  3. 17 сообщений
  4. Сообщение
  5. Личные данные

Igor F P,
Igor F P (23.07.2018, 09:57) писал:тестирование все таки близится к завершению
на этой неделе будет v.2.03 со всему указанными изменениями.


Маэстро, не томите! Сообщество жаждет прогресса!
Участник
  1. Оффлайн
  2. Посетители
  3. 43 сообщений
  4. Сообщение
  5. Личные данные

Спасибо!
Участник
  1. Оффлайн
  2. Посетители
  3. 43 сообщений
  4. Сообщение
  5. Личные данные

Игорь, я пользуюсь одной и той же болванкой для кода. лимит в старом коде - это неприкосновенный остаток.
я чистил код и видимо затёр лишнее.

можно эту переменную восстановить, по умолчанию это

лимит: дабл = 0.001;

скорее всего, это - торговый лимит операции на бирже.
ставить эту строчку нужно в раздел настроек пользователя.
marinaPlade
  1. Гости

Строительные леса — временное вспомогательное сооружение для размещения рабочих и материалов при выполнении строительных, монтажных и других работ. Применяются как снаружи, так и внутри здания. Чаще всего строительные леса собираются из унифицированных металлических и деревянных элементов.
В прошлом использовались допускавшие лишь однократное применение <a href=https://baraholka.onliner.by/viewtopic.php?t=21772185>леса строительные минск</a> из круглого или вчерне обработанного леса — откуда они и получили своё название.
В конструктивном отношении современные <a href=https://www.facebook.com/kiloton.by/>купить леса строительные</a> представляют собой пространственную каркасную систему, выполненную из стандартных металлических элементов, что допускает их использование независимо от очертаний сооружений и рельефа местности.
Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

в связи с вопросами и обращениями по техническому анализу и его использованию в 1bbot создал очень краткую справку по японским свечам с кодами для 1bbot.
Конечно, свечей очень много и описать кодами их всех это долгий и утомительный труд, поэтому там всего 8 фигур, но это как пример создания кодов для достаточно сложных фигур.
И они (свечи) частично работают показывая тренд крипты . Почему частично?
Ну крипта не фиат, и не все можно под одну гребенку списать.
Японские свечи.zip [864.67 Kb] Загрузок: 3

Последний раз редактировал Igor F P 19:16, 25.07.2018
Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

при запуске выявленоо отсутствие определения переменной limit.
Исходя из формулы где переменная используется
((TradeControl.buyAmnt-limit) > AAmnt))
вероятно назначение переменной предотвращение возникновения ошибки бота в случае нарушения условий вкладки Trade Option-Limits
там есть 2-а значения лимита : по остаткам и по транзакции
если эта переменная по остаткам то можно такой вариант
в разделе public указать
limit: double = 0.01; // или другую нужную вам величину
или с теле стратегии указать
limit:=botSafeLim1;

но судя по формуле речь идеть о транзакции
в этом случае
указываем в теле стратегии
limit:=botMinLim1;

автор надеюсь поправит, если я не правильно понял его код.

Последний раз редактировал Igor F P 12:56, 25.07.2018
Участник
  1. Оффлайн
  2. Посетители
  3. 43 сообщений
  4. Сообщение
  5. Личные данные

//-----------------please write to xtris@mail.ru to obtain support-------------------------------//

unit code;
// code.pas - unit code;

interface

uses Bot_RW, BaseStrategy;

type
TTradeStrategy = class(TBaseStrategy)
public

MoneyStart : Double;
CryptoStart : Double;

procedure OnCreate;override;
procedure OnDestroy;override;
procedure CanBuy(var RCanBuy:boolean; var RAmnt, RPrice:Double);override;
procedure CanSell(var RCanSell:boolean; var RAmnt, RPrice:Double);override;
procedure OnSaveState(AWriter:IDataWriter);override;
procedure OnloadState(AReader:IDataReader);override;
procedure OnWatch(AWriter:IDataWriter);override;
function CanCancelOrder(const AID:string;const AType:Boolean;const AAmnt,APrice:Double;const ADate:TDateTime):boolean;override;
procedure OnBuyCompleted(const AAmnt,APrice:double;var RIncome1,RIncome2:Double);override;
procedure OnSellCompleted(const AAmnt,APrice:double;var RIncome1,RIncome2:Double);override;
procedure OnStart;override;
procedure OnStop;override;
procedure OnPause;override;
procedure OnResume;override;
end;
const
//=============== * part for user settings * =========================================================//

TimeLiveOrder: double = 2; // vremja zhizni ordera
SoundOn: boolean = true; // vykljuchatel zvuka. false - bez zvuka, true - igrat zvuki
quantum: double = 0.00801;
profit: double = 1;

//================= * please do not change - for experts only!!! * ===================================//

SetOrderDelay: integer = 10;
SetMaxDelay: integer = 1200;
SetMaxSellDelay: integer = 1200;
WaitToTrade: integer = 1;


type TTradeControl = record
buyFlag: boolean;
sellFlag: boolean;
buyAmnt: double;
sellAmnt: double;
delBuyOrder: boolean;
delSellOrder: boolean;
setBuyFlag: TDateTime;
setSellFlag: TDateTime;
end;

var
k: integer;
kk: integer;
fintmp: double;
temp: double;
TradeControl: TTradeControl;
SetLastOrder: TDateTime;
SetMaxOrder: TDateTime;
SetMaxSellOrder: TDateTime;
Money: double;
mProfit: double;
cProfit: double;


implementation

uses Bot_RW, Bot_Vars, Bot_Log, Bot_Funcs, Bot_Remote,Bot_Pairs,Bot_Charts,Bot_Orderbook,Bot_Orders,Bot_Parties,Bot_DateTim e; //



procedure TTradeStrategy.OnCreate();
var i:integer;
begin
TradeControl.buyFlag:= false;
TradeControl.sellFlag:= false;
TradeControl.delBuyOrder:= false;
TradeControl.delSellOrder:= false;
Log('Bot Started...');
sigTrade:=0;
kk:=0;
end;


procedure TTradeStrategy.OnDestroy();
begin
//
end;

procedure TTradeStrategy.CanBuy(var RCanBuy:boolean; var RAmnt, RPrice:Double);
begin
RCanBuy:=false;
RPrice:=0.0;
RAmnt:=0.0;
if (sigTrade<0) then
begin
RAmnt:=quantum;
RPrice:=currTicker.buy; // buy price
RCanBuy:=true;
end;
if RCanBuy then
begin
TradeControl.buyAmnt:= RAmnt;
TradeControl.buyFlag:= true;
TradeControl.setBuyFlag:= now;
SetLastOrder:= now;
end;
end;

procedure TTradeStrategy.CanSell(var RCanSell:boolean; var RAmnt, RPrice:Double);
var allamnt: double;
i: integer;
begin
RCanSell:=false; // sell 0.11
RAmnt:=0.0; // amount of sell
RPrice:=0.0; //price
//------------------------------------------------------------------------------ ------------------------------
if (sigTrade>0) then
begin
RAmnt:=0.99*botInfo.c1AmntAvail;; // amount of sell
RPrice:=currTicker.sell; //price
RCanSell:=true; // sell
RCanSell:=true;
end;
if RCanSell then
begin
TradeControl.sellAmnt:= RAmnt;
TradeControl.sellFlag:= true;
TradeControl.setSellFlag:= now;
SetLastOrder:= now;
end;
end;

procedure TTradeStrategy.OnSaveState(AWriter:IDataWriter);
begin
if (kk=7) then
begin
AWriter.WriteDouble('MoneyStart',MoneyStart);
AWriter.WriteDouble('CryptoStart',CryptoStart);
end;
end;

procedure TTradeStrategy.onloadState(AReader:IDataReader);
begin
MoneyStart:=AReader.ReadDouble('MoneyStart',0.0);
CryptoStart:=AReader.ReadDouble('CryptoStart',0.0);
if ((MoneyStart+CryptoStart)=0.0) then
begin
Log('Start values are Zero. Take actual values...');
MoneyStart:=botInfo.c2Total;
CryptoStart:=botInfo.c1Total;
Log('Actual MoneyStart = '+FloatToStr(MoneyStart));
Log('Actual CryptoStart = '+FloatToStr(CryptoStart));
end;
if ((MoneyStart*CryptoStart)>(2*botInfo.c2Total*botInfo.c1Total)) then
begin
Log('Start values are corrected. Take actual values...');
MoneyStart:=botInfo.c2Total;
CryptoStart:=botInfo.c1Total;
Log('Save MoneyStart = '+FloatToStr(MoneyStart));
Log('Save CryptoStart = '+FloatToStr(CryptoStart));
end;
Log('Loaded MoneyStart = '+FloatToStr(MoneyStart));
Log('Loaded CryptoStart = '+FloatToStr(CryptoStart));
end;

procedure TTradeStrategy.OnWatch(AWriter:IDataWriter);
begin
AWriter.WriteStr('Strategy', 'Profit Analyst');
kk:=kk+1;
if (kk>5) then kk:=7;
if (kk=7) then
begin
sigTrade:=GetTradeInfo();
mProfit:=Trunc(1000000*(botInfo.c2Total-MoneyStart)/(MoneyStart+0.00000001))/100 00;
cProfit:=Trunc(1000000*(botInfo.c1Total-CryptoStart)/(CryptoStart+0.00000001))/1 0000;
AWriter.WriteStr('Money Profit', FloatToStr(mProfit)+' %');
AWriter.WriteStr('Crypto Profit', FloatToStr(cProfit)+' %');
end;
end;

function TTradeStrategy.CanCancelOrder(const AID:string;const AType:Boolean;const AAmnt,APrice:Double;const ADate:TDateTime):boolean;override;
begin
if AType and TradeControl.delBuyOrder then
begin
TradeControl.delBuyOrder:= false;
result:= true;
end
else if (not AType) and TradeControl.delSellOrder then
begin
TradeControl.delSellOrder:= false;
result:= true;
end
else if ((MinutesBetween(now, ADate+(currTicker.LocalTime-currTicker.ServerTime)) >= TimeLiveOrder) and
not ((AType and ((TradeControl.buyAmnt-limit) > AAmnt)) or (not AType and ((TradeControl.sellAmnt-limit) > AAmnt)))) or (AAmnt < botMinLim1) then result:= true
else result:=false;

if result then
begin
if AType then Log('Can cancel...');
SetLastOrder:= now;
end
else
begin
if AType then TradeControl.setBuyFlag:= now
else TradeControl.setSellFlag:= now;
end;
end;

procedure TTradeStrategy.OnBuyCompleted(const AAmnt,
APrice: double; var RIncome1,RIncome2:Double);
begin
TradeControl.setBuyFlag:= now;
Log('Buy completed at Price '+FloatToStr(APrice));
MoneyStart:=botInfo.c2Total;
CryptoStart:=botInfo.c1Total;
if SoundOn then PLaySound('buy.mp3');
end;

procedure TTradeStrategy.OnSellCompleted(const AAmnt,
APrice: double; var RIncome1,RIncome2:Double);
begin
TradeControl.setSellFlag:= now;
Log('Sell completed at Price '+FloatToStr(APrice));
MoneyStart:=botInfo.c2Total;
CryptoStart:=botInfo.c1Total;
if SoundOn then PLaySound('sell.mp3');
end;

procedure TTradeStrategy.OnStart();
begin
Log('Bot Started...');
Log('Bot Paused...');
end;

procedure TTradeStrategy.OnStop();
begin
cancelAllOrders:= true;
end;

procedure TTradeStrategy.OnPause();
begin
Log('Bot Paused...');
end;

procedure TTradeStrategy.OnResume();
begin
TradeControl.sellFlag:= false;
TradeControl.buyFlag:= false;
Log('Bot Resumed... ');
end;

function GetTradeInfo(): double;

begin
fintmp:=0;
if ( mProfit>profit ) then fintmp:=1; //sell
if ( cProfit>profit ) then fintmp:=-1; //buy
result:=fintmp;
end;

end.
Участник
  1. Оффлайн
  2. Посетители
  3. 43 сообщений
  4. Сообщение
  5. Личные данные

Модификация кода в стратегию Профит Аналитик

Для этого меняем в вышеприведённом коде пару функций--

//------------------------------------------------------------------------------ -------------
procedure TTradeStrategy.OnWatch(AWriter:IDataWriter);
begin
AWriter.WriteStr('Strategy', 'Profit Analyst');
// AWriter.WriteStr('Hint', Hint);
kk:=kk+1;

if (kk>5) then kk:=7;
if (kk=7) then
begin
sigTrade:=GetTradeInfo();
mProfit:=Trunc(1000000*(botInfo.c2Total-MoneyStart)/(MoneyStart+0.00000001))/100 00;
cProfit:=Trunc(1000000*(botInfo.c1Total-CryptoStart)/(CryptoStart+0.00000001))/1 0000;
AWriter.WriteStr('Money Profit', FloatToStr(mProfit)+' %');
AWriter.WriteStr('Crypto Profit', FloatToStr(cProfit)+' %');
end;
end;

function GetTradeInfo(): double;

begin
fintmp:=0;
if ( mProfit>profit ) then fintmp:=1; //sell
if ( cProfit>profit ) then fintmp:=-1; //buy
result:=fintmp;
end;

//------------------------------------------------------------------------------ ----------------

и в блоке для пользователя пишем желаемый профит фиксации прибыли
//------------------------------------------------------------------------------ ----------------
profit: double = 1; //профит в один процент (минус комиссия)
//------------------------------------------------------------------------------ ----------------

и всё - это уже стратегия по тупой фиксации профита при достижении заданной планки. Удачи.
Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

и хотя 2.03 работает нормально,
пока не удается добиться 100% успеха алгоритма "перелом" в покупке при росте курса так, что бы не было висяков при резких остановках и/или падениях.


а "локальное дно" уверено отрабатывает свое назавние

Последний раз редактировал Igor F P 10:25, 24.07.2018
Гуру
  1. Оффлайн
  2. Посетители
  3. 120 сообщений
  4. Сообщение
  5. Личные данные

тестирование все таки близится к завершению
на этой неделе будет v.2.03 со всему указанными изменениями.



как видно Волна обеспечивает правильный выбор точек buy/sell и при подъеме, и при падении, и флейте.
также найдено решение (спс Sergej_1966, он подсказал нужную фукцию) для сохранения данных кода Short на диске.

и на основе Волны и 1bbot создан "Советник/терминал" для ручной торговли.
Возможно будет предоставлен доступ к сигналам от полной версии" Волны" и "Советника".

Последний раз редактировал Igor F P 10:17, 23.07.2018
Участник
  1. Оффлайн
  2. Посетители
  3. 43 сообщений
  4. Сообщение
  5. Личные данные


работа стратегии

Последний раз редактировал Sergej_1966 00:23, 23.07.2018
 

Последние темы

  1. Советник
    Автор: Igor F P 20:12, 04.08.2018
  2. Сценарий "Волна"
    Автор: Igor F P 13:15, 31.07.2018
  3. Справка (*.chm)
    Автор: Sergej_1966 09:21, 27.07.2018

Изменения статуса

  1. профиль В поиске... 09:52, 29.06.2018
  2. профиль http://bit.ly/dolevik Доли проектов: Выпуск / Дивиденды / По... 09:56, 14.05.2016
  3. профиль http://ethereum.today/btccloud 16:33, 21.03.2015
  4. Просмотреть все статусы

Статьи

Статистика форума:

Сообщений
3267
Пользователей
34064
Новый участник
jaynead1
Рекорд посещаемости
2815:05, 16.06.2014