کروکڈائل لائن ٹریڈنگ سسٹم پائیتھون ورژن

مصنف:نیکی, تخلیق: 2020-05-07 14:33:19, تازہ کاری: 2023-11-06 19:40:42

img

خلاصہ

وہ لوگ جنہوں نے مالیاتی تجارت کی ہے شاید ان کا تجربہ ہوگا۔ بعض اوقات قیمتوں میں اتار چڑھاؤ باقاعدگی سے ہوتا ہے ، لیکن زیادہ کثرت سے یہ بے ترتیب چلنے کی غیر مستحکم حالت دکھاتا ہے۔ یہ اس عدم استحکام کی وجہ سے ہے جہاں مارکیٹ کے خطرات اور مواقع موجود ہیں۔ عدم استحکام کا مطلب غیر متوقع بھی ہوتا ہے ، لہذا غیر متوقع مارکیٹ کے ماحول میں واپسی کو زیادہ مستحکم بنانے کا طریقہ بھی ہر تاجر کے لئے ایک مسئلہ ہے۔ یہ مضمون ہر ایک کو متاثر کرنے کی امید میں ، مگرمچھ ٹریڈنگ کے قواعد کی حکمت عملی کا تعارف کرائے گا۔

کروکیڈل لائن کیا ہے؟

img

تمساح کی لکیر دراصل تین خصوصی حرکت پذیر اوسط ہیں ، جو نیلی لکیر کے چہرے ، سرخ لکیر کے دانتوں اور سبز لکیر کے اوپری ہونٹ سے مطابقت رکھتی ہیں۔ چہرہ 13 مدت کا حرکت پذیر اوسط ہے اور مستقبل میں 8 بار چلتا ہے۔ دانت 8 مدت کا حرکت پذیر اوسط ہے اور مستقبل میں 5 بار چلتا ہے۔ اوپری ہونٹ 5 مدت کا حرکت پذیر اوسط ہے اور مستقبل میں 3 بار چلتا ہے۔

تمساح کی لکیر کا اصول

تمساح کی لکیر جیومیٹری اور غیر لکیری حرکیات پر مبنی تکنیکی تجزیہ کے طریقوں کا ایک مجموعہ ہے۔ جب تمساح کی چوت ، دانت اور اوپری ہونٹ بند یا پھنسے ہوئے ہوتے ہیں ، تو اس کا مطلب یہ ہوتا ہے کہ تمساح سو رہا ہے۔ اس وقت ، ہم عام طور پر مارکیٹ سے باہر رہتے ہیں جب تک کہ ٹکڑا ظاہر نہ ہو ، اور صرف واضح رجحان مارکیٹ میں حصہ لیتے ہیں۔

تمساح جتنا زیادہ سوتا ہے ، جتنا زیادہ بھوکا ہوگا جب وہ جاگتا ہے ، لہذا ایک بار جب وہ جاگتا ہے تو ، وہ اپنا منہ وسیع کھول دے گا۔ اگر اوپری ہونٹ دانتوں سے اوپر ہے اور دانت گال سے اوپر ہیں تو ، اس سے یہ ظاہر ہوتا ہے کہ مارکیٹ ایک بیل مارکیٹ میں داخل ہوگئی ہے اور تمساح گائے کا گوشت کھانے جارہے ہیں۔ اگر اوپری ہونٹ دانتوں سے نیچے ہے اور دانت گال سے نیچے ہیں تو ، اس سے یہ ظاہر ہوتا ہے کہ مارکیٹ ایک ریچھ مارکیٹ میں داخل ہوگئی ہے اور تمساح ریچھ کا گوشت کھانے جارہے ہیں۔ جب تک یہ بھرا ہوا نہیں ہوتا ، تب تک وہ پھر اپنا منہ بند کردے گا (رکھیں اور منافع کمائیں) ۔

کروکیڈل لائن کے حساب کا فارمولا

اوپری ہونٹ = REF(SMA(VAR1,5,1),3) دانت = REF ((SMA ((VAR1,8,1),5) Chin = REF(SMA(VAR1,13,1)

تمساح کی حکمت عملی کی ساخت

مرحلہ 1: حکمت عملی کا فریم ورک لکھیں

# Strategy main function
def onTick():
     pass

# Program entry
def main ():
     while True: # Enter infinite loop mode
         onTick() # execute strategy main function
         Sleep(1000) # sleep for 1 second

ایف ایم زیڈ پولنگ موڈ کا استعمال کرتے ہوئے ، ایک آن ٹِک فنکشن ہے ، اور دوسرا مین فنکشن ہے ، جس میں آن ٹِک فنکشن کو مین فنکشن میں لامحدود لوپ میں انجام دیا جاتا ہے۔

مرحلہ 2: پائیتھون لائبریری درآمد کریں

import talib
import numpy as np

ایس ایم اے فنکشن ہماری حکمت عملی میں استعمال ہوتا ہے۔ ایس ایم اے ریاضیاتی اوسط ہے۔ طالب لائبریری میں پہلے سے تیار کردہ ایس ایم اے فنکشن موجود ہیں ، لہذا براہ راست طالب پائیتھون لائبریری کو درآمد کریں اور پھر اسے براہ راست کال کریں۔ کیونکہ اس فنکشن کو کال کرتے وقت ، آپ کو نمپی فارمیٹ پیرامیٹرز میں منتقل کرنے کی ضرورت ہوتی ہے ، لہذا ہمیں حکمت عملی کے آغاز میں ان دونوں پائیتھون لائبریریوں کو درآمد کرنے کے لئے درآمد کا استعمال کرنے کی ضرورت ہے۔

مرحلہ 3: K لائن صف کے اعداد و شمار کو تبدیل کریں

# Convert the K-line array into an array of highest price, lowest price, and closing price, for conversion to numpy.array
def get_data(bars):
    arr = []
    for i in bars:
        arr.append(i['Close'])
    return arr

یہاں ہم نے get_data فنکشن بنایا ہے ، اس فنکشن کا مقصد عام K لائن صف کو نمپی فارمیٹ ڈیٹا میں پروسیس کرنا ہے۔ ان پٹ پیرامیٹر ایک K لائن صف ہے ، اور آؤٹ پٹ نتیجہ نمپی فارمیٹ میں پروسیس شدہ ڈیٹا ہے۔

مرحلہ 4: پوزیشن کے اعداد و شمار حاصل کریں

# Get the number of positions
def get_position ():
     # Get position
     position = 0 # The number of assigned positions is 0
     position_arr = _C (exchange.GetPosition) # Get array of positions
     if len (position_arr)> 0: # If the position array length is greater than 0
         for i in position_arr:
             if i ['ContractType'] == 'rb000': # If the position symbol is equal to the subscription symbol
                 if i ['Type']% 2 == 0: # If it is long position
                     position = i ['Amount'] # Assigning a positive number of positions
                 else:
                     position = -i ['Amount'] # Assigning a negative number of positions
     return position

پوزیشن کی حیثیت میں حکمت عملی کی منطق شامل ہے۔ ہمارے پہلے دس اسباق میں ہمیشہ مجازی پوزیشنوں کا استعمال کیا گیا ہے ، لیکن حقیقی تجارتی ماحول میں حقیقی پوزیشن کی معلومات حاصل کرنے کے لئے گیٹ پوزیشن فنکشن کا استعمال کرنا بہتر ہے ، بشمول: پوزیشن کی سمت ، پوزیشن منافع اور نقصان ، پوزیشنوں کی تعداد وغیرہ۔

مرحلہ 5: اعداد و شمار حاصل کریں

exchange.SetContractType('rb000') # Subscribe the futures varieties
     bars_arr = exchange.GetRecords() # Get K line array
     if len(bars_arr) < 22: # If the number of K lines is less than 22
         return

ڈیٹا حاصل کرنے سے پہلے ، آپ کو پہلے متعلقہ فیوچر کی اقسام کو سبسکرائب کرنے کے لئے سیٹ کنٹریکٹ ٹائپ فنکشن کا استعمال کرنا ہوگا۔ ایف ایم زیڈ تمام چینی اجناس فیوچر کی اقسام کی حمایت کرتا ہے۔ فیوچر کی علامت کو سبسکرائب کرنے کے بعد ، آپ K لائن ڈیٹا حاصل کرنے کے لئے گیٹ ریکارڈز فنکشن کا استعمال کرسکتے ہیں ، جو ایک صف واپس کرتا ہے۔

مرحلہ 6: اعداد و شمار کا حساب لگائیں

np_arr = np.array (get_data (bars_arr)) # Convert closing price array
sma13 = talib.SMA (np_arr, 130) [-9] # chin
sma8 = talib.SMA (np_arr, 80) [-6] # teeth
sma5 = talib.SMA (np_arr, 50) [-4] # upper lip
current_price = bars_arr [-1] ['Close'] # latest price

ٹیلی لائبریری کا استعمال کرتے ہوئے ایس ایم اے کا حساب لگانے سے پہلے ، آپ کو عام K- لائن صف کو نمپی ڈیٹا میں پروسیس کرنے کے لئے نمپی لائبریری کا استعمال کرنے کی ضرورت ہے۔ پھر کروکڈائل لائن کا منہ ، دانت اور اوپری ہونٹ الگ الگ حاصل کریں۔ اس کے علاوہ ، آرڈر دیتے وقت قیمت کے پیرامیٹر کو منتقل کرنے کی ضرورت ہے ، لہذا ہم K- لائن صف میں اختتامی قیمت استعمال کرسکتے ہیں۔

مرحلہ 7: آرڈر دیں

position = get_position ()
if position == 0: # If there is no position
     if current_price> sma5: # If the current price is greater than the upper lip
         exchange.SetDirection ("buy") # Set the trading direction and type
         exchange.Buy (current_price + 1, 1) # open long position order
     if current_price <sma13: # If the current price is less than the chin
         exchange.SetDirection ("sell") # Set the trading direction and type
         exchange.Sell (current_price-1, 1) # open short position order
    
if position> 0: # If you have long positions
     if current_price <sma8: # If the current price is less than teeth
         exchange.SetDirection ("closebuy") # Set the trading direction and type
         exchange.Sell (current_price-1, 1) # close long position

if position <0: # If you have short position
     if current_price> sma8: # If the current price is greater than the tooth
         exchange.SetDirection ("closesell") # Set the trading direction and type
         exchange.Buy (current_price + 1, 1) # close short position

آرڈر دینے سے پہلے ، آپ کو اصل پوزیشن حاصل کرنے کی ضرورت ہے۔ ہم نے پہلے بیان کردہ get_position فنکشن پوزیشنوں کی اصل تعداد واپس کردے گا۔ اگر موجودہ پوزیشن لمبی ہے تو ، یہ ایک مثبت نمبر واپس کردے گی۔ اگر موجودہ پوزیشن مختصر ہے تو ، یہ منفی نمبر واپس کردے گی۔ اگر کوئی پوزیشن نہیں ہے تو ، 0 واپس کرے گا۔ آخر میں ، اوپر کی تجارتی منطق کے مطابق آرڈر دینے کے لئے خرید و فروخت کے افعال کا استعمال کیا جاتا ہے ، لیکن اس سے پہلے ، تجارتی سمت اور قسم کو بھی ترتیب دینے کی ضرورت ہے۔

مکمل حکمت عملی

'' 'backtest
start: 2019-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1h
exchanges: [{"eid": "Futures_CTP", "currency": "FUTURES"}]
'' '

import talib
import numpy as np


# Convert the K-line array into an array of highest price, lowest price, and closing price, used to convert to numpy.array type data
def get_data (bars):
    arr = []
    for i in bars:
        arr.append (i ['Close'])
    return arr


# Get the number of positions
def get_position ():
    # Get position
    position = 0 # The number of assigned positions is 0
    position_arr = _C (exchange.GetPosition) # Get array of positions
    if len (position_arr)> 0: # If the position array length is greater than 0
        for i in position_arr:
            if i ['ContractType'] == 'rb000': # If the position symbol is equal to the subscription symbol
                if i ['Type']% 2 == 0: # If it is long
                    position = i ['Amount'] # Assign a positive number of positions
                else:
                    position = -i ['Amount'] # Assign a negative number of positions
    return position
    
    

# Strategy main function
def onTick ():
    # retrieve data
    exchange.SetContractType ('rb000') # Subscribe to futures varieties
    bars_arr = exchange.GetRecords () # Get K line array
    if len (bars_arr) <22: # If the number of K lines is less than 22
        return
    
    # Calculation
    np_arr = np.array (get_data (bars_arr)) # Convert closing price array
    sma13 = talib.SMA (np_arr, 130) [-9] # chin
    sma8 = talib.SMA (np_arr, 80) [-6] # teeth
    sma5 = talib.SMA (np_arr, 50) [-4] # upper lip
    current_price = bars_arr [-1] ['Close'] # latest price

    position = get_position ()
    if position == 0: # If there is no position
        if current_price> sma5: # If the current price is greater than the upper lip
            exchange.SetDirection ("buy") # Set the trading direction and type
            exchange.Buy (current_price + 1, 1) # open long position order
        if current_price <sma13: # If the current price is less than the chin
            exchange.SetDirection ("sell") # Set the trading direction and type
            exchange.Sell (current_price-1, 1) # open short position order
        
    if position> 0: # If you have long positions
        if current_price <sma8: # If the current price is less than teeth
            exchange.SetDirection ("closebuy") # Set the trading direction and type
            exchange.Sell (current_price-1, 1) # close long position

    if position <0: # If you have short positions
        if current_price> sma8: # If the current price is greater than the tooth
            exchange.SetDirection ("closesell") # Set the trading direction and type
            exchange.Buy (current_price + 1, 1) # close short position

            
# Program main function
def main ():
    while True: # loop
        onTick () # execution strategy main function
        Sleep (1000) # sleep for 1 second

براہ راست نیچے دیئے گئے لنک پر کلک کریں بغیر ترتیب کے مکمل حکمت عملی کی کاپی کرنے کے لئے:https://www.fmz.com/strategy/199025

اختتام

تمساح ٹریڈنگ کے اصول کا سب سے بڑا کردار یہ ہے کہ جب ہم تجارت کرتے ہیں تو مارکیٹ کی سمت برقرار رکھنے میں ہماری مدد کریں ، اس سے قطع نظر کہ موجودہ مارکیٹ کی قیمت میں کس طرح تبدیلی آتی ہے ، اور جب تک استحکام کی مارکیٹ ظاہر نہیں ہوتی تب تک منافع حاصل کرنا جاری رکھیں۔ تمساح لائن کو دوسرے ایم اے سی ڈی اور کے ڈی جے اشارے کے ساتھ اچھی طرح استعمال کیا جاسکتا ہے۔


متعلقہ

مزید