عملکرد استراتژی پیشرفته ، پیچیدگی کد را کاملاً افزایش می دهد که عملکردهای متحرک ارائه شده در اینجا را به یک مثال پیشرفته ضمانت می کند.
پارامترهای استراتژی و پشتی#
در اینجا ما تمام پارامترهایی را که بر نتیجه پشتی تأثیر می گذارد تعریف می کنیم.
وارد كردن پاندا as pd از جانب TradingStrategy. TimeBucket وارد كردن مد از جانب TradingStrategy. Cain وارد كردن زنجیر # کدام جفت را تجزیه و تحلیل می کنیم # https://analytics. sushi.com/pairs/0x06da0fd43c1a5d7a4faa011111c04910a18453 هدف_ هدف = ("weth", "USDC") # پشتی فقط Ethereum Maiet را در نظر بگیرید کنگره = زنجیر.اتر # Backtest فقط مبادله Sushiswap v2 را در نظر می گیرد تبادل = "سوشی" # از شمع 4H برای پشتی استفاده کنید شمع_کند = مد.h4 # کیف پول پول بازی ما چند دلار است CASH اولیه = 10_000 # میانگین متحرک باید بالاتر از این شماره باشد تا ما خریداری کنیم Moveing_aVere_candles = 50 # چند شمع قبلی را برای مقدار کم نزدیک نمونه می گیریم Low_candles = 7 # چند شمع قبلی را برای مقدار نزدیک زیاد نمونه می گیریم candles High_candles = 7 # چه زمانی پشتی را شروع می کنیم - شمع تنظیم شده از Data Dump را از سرور محدود کنید backtesting_begins = pd.زمان سنج("2020-10-1") # چه موقع پشتی را به پایان می رسانیم backtesting_ends = pd.زمان سنج("2021-09-1") # اگر قیمت 15 ٪ کاهش یابد ، ما باعث از دست دادن توقف می شویم توقف_س = 0. 97 اولیه سازی مشتری استراتژی تجارت#
این مرحله بسته های لازم پایتون و کلیدهای مورد نیاز API را نصب می کند.
تلاش كردن: وارد كردن تجارت بجز وارد کننده: %پودرراهپیمایی تجارت را نصب کنیدوارد كردن سایت سایت.اصلی() از جانب TradingStrategy. Client وارد كردن مشتری مشتری = مشتری.Create_Jupyter_Client()
استراتژی تجارت را در محیط نوت بوک Jupyter آغاز کرد ، پیکربندی در /users/moo/. TradingStrategy ذخیره می شود
ایجاد استراتژی#
در اینجا استراتژی تعریف شده برای Backtrader است.
از جانب تایپ کردن وارد كردن اختیاری وارد كردن پیشرو as bt از جانب پیشرو وارد كردن شاخص ها از جانب TradingStrategy. Analysis. Tradehint وارد كردن با تجارت, از نوع از جانب TradingStrategy. FrameWorks. BackTrader وارد كردن کار از جانب پیشرو وارد كردن مورد تجزیه و تحلیل, موقعیت طبقه دو برابر 7(کار): "" "نمونه ای از استراتژی Double-77 برای معاملات Dex Spot. توضیحات اصلی: https://www.thechartist.com. au/double-7-s-strategy/ """ دنباله شروع(خود): # شاخص های مورد استفاده در این استراتژی را تنظیم کنید # میانگین حرکت که به ما می گوید وقتی در بازار گاو هستیم خود.میانگین_ = شاخص ها.SMA(دوره زمانی=Moveing_aVere_candles) # بالاترین قیمت نزدیک برای شمع های n # "خروج" در اسکریپت کاج خود.بالاترین = شاخص ها.بالاترین(خود.داده ها.بستن, دوره زمانی=candles High_candles, طرح=درست است، واقعی, زیر مجموعه=دروغ) # کمترین قیمت نزدیک برای شمع های n # "ورود" در اسکریپت کاج خود.پایین ترین = شاخص ها.پایین ترین(خود.داده ها.بستن, دوره زمانی=Low_candles, طرح=درست است، واقعی, زیر مجموعه=دروغ) دنباله بعد(خود): "" "تصمیم گیری را برای هر شمع اجرا کنید." "" بستن = خود.داده ها.بستن[0] کم = خود.پایین ترین[-1] عالی = خود.بالاترین[-1] با منزل کردن = خود.میانگین_[0] if نه همه([بستن, کم, عالی, با منزل کردن]): # اگر داده های NAN یا صفر داریم ، سعی نکنید هیچ تصمیمی بگیرید برگشت موقعیت: اختیاری[موقعیت] = خود.موقعیت if نه موقعیت: # ما در بازارها نیستیم ، ورودی را بررسی کنیم if بستن >= با منزل کردن وت بستن کم وت نه موقعیت: # وقتی که ما بالاتر از حد متوسط حرکت می کنیم و نزدیک روزانه بود ، وارد شوید خود.خرید کردن(قیمت=بستن, اشاره=با تجارت(نوع=از نوع.باز کن)) دیگر: # ما در بازارها هستیم ، خروج را بررسی کنید if بستن >= عالی: # اگر قیمت بالاتر از 7 روز خود است ، از بازارها خارج شوید #print ("از موقعیت خارج شد") خود.بستن(اشاره=با تجارت(نوع=از نوع.بستن)) دیگر: # خروج از بازار را از طریق از دست دادن توقف بررسی کنید # از آنجا که AMMS از انواع سفارشات پیچیده پشتیبانی نمی کند ، # فقط مبادله ، ما در اینجا از دست دادن دستمزد دستی نمی کنیم # فروش بازار بی رحمانه در صورتی که قیمت زیر آستانه ضرر متوقف شود ورود_ = خود.Last_opened_buy.قیمت if بستن ورود_ * توقف_س: # چاپ (F "توقف از دست دادن. اکنون ، باز شد") خود.بستن(اشاره=با تجارت(نوع=از نوع.stop_loss_triggered)) تنظیم استراتژی backtest#
این تنظیم منابع داده و سر و صدا کردن برای اجرای Backtest ("BoilerPlate" از نظر توسعه نرم افزار) است.
از جانب TradingStrategy. FrameWorks. BackTrader وارد كردن آماده سازی_ candles_for_backtrader, add_dataframes_as_feeds, پیشخدمت از جانب TradingStrategy. Pair وارد كردن پانداریزان # روی شمع های روزانه کار کنید Strategy_Time_Bucket = شمع_کند Exchange_universe = مشتری.fetch_exchange_universe() columnar_pair_table = مشتری.fetch_pair_universe() all_pairs_dataframe = columnar_pair_table.to_pandas() جفت_نه = پانداریزان(all_pairs_dataframe) # به جفت هایی که فقط در Sushiswap تجارت می کنند ، فیلتر کنید sushi_swap = Exchange_universe.get_by_chain_and_slug(کنگره, تبادل) جفت = جفت_نه.get_one_pair_from_pandas_universe( sushi_swap.Exchange_id, هدف_ هدف[0], هدف_ هدف[1]) all_candles = مشتری.fetch_all_candles(Strategy_Time_Bucket).to_pandas() جفت_: pd.قاب داده = all_candles.محل[all_candles["pair_id"] == جفت.pair_id] جفت_ = آماده سازی_ candles_for_backtrader(جفت_) # ما شمع ها را به یک محدوده تاریخ خاص محدود می کنیم تا این نوت بوک قطعی باشد جفت_ = جفت_[(جفت_.فهرست مطالب >= backtesting_begins) & (جفت_.فهرست مطالب backtesting_ends)] چاپ(f"اندازه مجموعه داده است لن(جفت_)> شمع ها") # این استراتژی به مدت 100 روز به داده ها نیاز دارد. زیرا ما در صرافی های جدید کار می کنیم ، # به سادگی ممکن است داده های کافی در آنجا نباشد ادعا کردن لن(جفت_) > Moveing_aVere_candles, "ما داده های کافی برای اجرای استراتژی نداریم" # موتور تست Backtrader را "Cebebro" ایجاد کنید مغزی = bt.مغزی(stdstats=درست است، واقعی) # استراتژی را اضافه کنید مغزی.افزودنی(دو برابر 7) # برای عملکرد استراتژی دو تحلیلگر اضافه کنید مغزی.ماده تعدیل کننده(bt.مورد تجزیه و تحلیل.ساقه, ریسک پذیری=0.0) مغزی.ماده تعدیل کننده(bt.مورد تجزیه و تحلیل.بازگرداندن) مغزی.ماده تعدیل کننده(bt.مورد تجزیه و تحلیل.فروکش) مغزی.ماده تعدیل کننده(پیشخدمت) # فید قیمت ETH-USD ما را اضافه کنید add_dataframes_as_feeds( مغزی, جفت_نه, [جفت_], backtesting_begins, backtesting_ends, Strategy_Time_Bucket, طرح=درست است، واقعی)
اندازه مجموعه داده های سال 2011 شمع ها < pan> pair_candles است
فارکس پرشین...
ما را در سایت فارکس پرشین دنبال می کنید
برچسب :
نویسنده : الیزابت امینی
بازدید : <-PostHit->
تاريخ : سه
شنبه
6 تير
1402 ساعت: 12:18